C#原码,补码,反码以及取反

在取反的二进制数中最高位是符号位(0代表正数,1代表负数)

原码:将数值转化为2进制数,将最高位数转变为相对应的符号位

反码:原码为正数的反码就是本身;

   原码为负数的反码就是符号位不变,其余数  0变1,1变0。

补码:正数的补码就是本身;

      负数的补码是反码符号位不变,最后一位+1

按位取反(~)计算过程:

原码--->反码--->补码--->对补码按位取反(包括符号位也需要取反)

--->拿到取反后的补码--->对补码还原出反码--->对反码还原出原码

例:6

原码:0000 0110

反码:0000 0110(正数的反码是本身)

补码:0000 0110(正数的补码是本身)

对补码按位取反(包括符号位也需要取反):1111 1001

拿到取反后的补码:1111 1001

还原出反码:1111 1000(此时因为取反后为负数,按照规定:负数的补码是反码符号位不变,最后一位+1,所以补码的最后一位-1得到负数的反码。)

还原出原码:1000 0111(此时为负数,按照规定:原码为负数的反码就是符号位不变,其余数  0变1,1变0。所以除去符号位不变,其他位转变得到原码)

输出:-7

例:-7

原码:1000 0111

反码:1111 1000(原码为负数的反码就是符号位不变,其余数  0变1,1变0。)

补码:1111 1001( 负数的补码是反码符号位不变,最后一位+1)

对补码按位取反(包括符号位也需要取反):0000 0110

拿到取反后的补码:0000 0110

还原出反码:0000 0110(此时取反后为正数,按照规定:正数的补码就是本身,所以本身就是反码。)

还原出原码:0000 0110(按照规定:正数的反码就是本身,所以本身就是原码)

输出:6

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值