初识C语言四:二进制与补码,枚举

四:二进制与补码

二进制: 数码:0,1

基数:2

二进制数的权展开式:

(101.01) = 1*2²+0*2¹+1*2⁰+0*2⁻¹+1*2⁻²

十进制转化为二进制: 除以二逆向取余法

十进制转化为二进制(小数):乘以二顺向取整法

在汇编中,在数字后加字母B表示二进制数,加字母O表示八进制,加字母D表示十进制,加字母H是16进制

负整数转二进制:先求与该负数相对应的正整数的补码,然后将所有位取反,末尾+1,不够位数时,左边补1

正数的原码、反码和补码相同,负数都不相同

补码:

原码 :也叫符号绝对值

最高位0表示+,1表示-,其余二进制位是该数字的绝对值的二进制位

原简单易懂

加减运算复杂

存在加减乘除四种运算,增加了cpu的复杂度

0的表示不唯一

反码:反码运算便,也没有在计算中应用

移码移码表示数值平移n位,n称为移码量

移码主要用于浮点数的阶码的存储

补码:解决整数的存储,

二进制负数求十进制:将所有位取反,末尾加1,所得数字是该负数的绝对值

五:宏定义和枚举

宏定义

#define 名字 值

注意:结尾无分号,因为不是C的语句

名字可以是各种单词,值可以是各种东西,比如输出控制或字符

在进行,编译之前,会先进性预处理,把这些名字全部替换为值

如果一个宏,有其他宏,会被再次替换

如果宏中的值超过一行,则在最后一行加上一个\

定义宏时,也可以不写值

预定义的宏有如下:

__LINE__

__FILE__

__DATE__

__TIME__

__STDC__

枚举:语法:

enum 枚举类型的标记名{枚举成员列表}; //其中的枚举成员列表是以逗号“,”相分隔,花括号内被称为枚举元素或枚举常量

枚举常量是另外一种类型变量,枚举是一个长量整形值的列表,例如

enum{JAN = 1, FEB, MAR, APR , MAY ,JUN, JUL, AUG, SEP,OCT,NOV,DEV};

//在没有显示说明的情况下,enum类型中第一个枚举名的值为0,第二个为1,依次类推

//如果只制定部分枚举名的值,那么未指定的枚举名的值将依着最后一个指定值向后递增。

//不同枚举中的名字必须互不相同,‍♂同一枚举中不同的名字可以具有相同的值

//枚举为建立常量值与名字之间的关联提供了一种便利方式。相对于#define来说,优势在于常量值可以自动生成。

此外:虽然可以通过声明变量的形式,但是编译器不检查的这种类型的变量中的存储的值是否是有效值。而枚举变量提供这种检查。

你可能感兴趣的:(初识C语言四:二进制与补码,枚举)