c语言输出任意二进制数的补码,初识C语言四:二进制与补码,枚举

本文详细介绍了二进制数的表示方式,包括权展开式和转换方法,如十进制转二进制的除二逆向取余法。同时,探讨了负数在二进制中的表示,通过补码的概念来解决存储和运算问题。还提到了宏定义和枚举在编程中的使用,宏定义允许预处理替换,枚举则为创建常量和名字关联提供便利,且枚举变量具有类型检查功能。
摘要由CSDN通过智能技术生成

四:二进制与补码

二进制: 数码: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来说,优势在于常量值可以自动生成。

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值