c语言原码,反码,补码,以及取反

1.原码:
原码由二进制数得原数值部分和符号位组成。
+1010101的原码位01010101,-1010101的原码为11010101.其中第一位为+,-符号位。

2.反码:
正数:反码和原码相同,为符号位加上原数值。
+10010101的反码为010010101
负数:反码为符号位加上原数值按位取反。
-10010101的反码为101101010

3.补码:
正数:补码,原码,反码相同。
+110011补码为0110011
负数:补码为符号位加上原数值按位取反后再在最低位加1,即为反码加1.
-110011补码为1001101

4.取反:
以 8 和 -8为例:
~8
(1)原码:00001000
(2)补码:00001000
(3)反码:00001000
因为计算机中存储是以补码的方式存储,所以我们对一个数取反要先对它的补码进行取反,然后求取反后的原码,而不是直接对其原码进行取反
(1)补码取反:11110111
(2)取反后的反码:11110110(反码=补码-1)
(3)原码:10001001
原码二进制转换为十进制为:-9
所以8取反为-9
~(-8)
(1)原码:1 1000(第一个1为符号位,为-)
(2)反码:1 0111
(3)补码: 1 1000


补码取反: 0 0111
取反后的反码: 0 0111
取反后的原码: 0 0111
所以-8的取反为7

总结 n的反码为 “-(n+1)”

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值