C语言 ——— 整数的二进制表示形式:原码、反码、补码

目录

须知 

符号位

正整数的原码、反码、补码

十进制转换二进制 

 正整数在内存中的存放

负整数的原码、反码、补码

负整数原码、反码、补码的计算规则 

 负整数在内存中的存放


须知 

  1. 正整数的原码、反码、补码是相同的
  2. 负整数的原码、反码、补码是需要计算的
  3. 整数在内存中存储的是补码,逻辑计算的、操作符操作的都是补码

符号位

符号位为原码、反码、补码的最高位

  • 符号位为0:表示此数据是正整数
  • 符号位为1:表示此数据是负整数 

正整数的原码、反码、补码

十进制转换二进制 

int a = 15;

15的二进制表示形式为:1111 (bit位)

15的二进制表示形式解释(乘以各自权重再相加):1*2^0 + 1*2^1 + 1*2^2 + 1*2^3 = 15

 正整数在内存中的存放

变量a为int整型,int是4个字节,也就是32个bit位(每个字节8个bit位,4*8=32bit)

所以正整数15存放在int整型的变量a中要补全32个bit位

且32个bit位中的最高位符号位要为0,因为15是正整数

00000000 00000000 00000000 00001111 --- 15存储在变量a中的原码

00000000 00000000 00000000 00001111 --- 15存储在变量a中的反码

00000000 00000000 00000000 00001111 --- 15存储在变量a中的补码


负整数的原码、反码、补码

负整数原码、反码、补码的计算规则 

  1. 负整数的原码:转换为二进制,通过变量的类型补全,最高位符号位记为1即可
  2. 负整数的反码:负整数原码的符号位不变,其他位按位取反,得到的就是负整数的反码
  3. 负整数的补码:负整数的反码+1,得到的就是负整数的补码

 负整数在内存中的存放

int a = -15;

10000000 00000000 00000000 00001111 --- (-15)存储在变量a中的原码

11111111 11111111 11111111 11110000 --- (-15)存储在变量a中的反码

11111111 11111111 11111111 11110001 --- (-15)存储在变量a中的补码

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值