1的取反为什么是-2的详细解析

  1. 先求取1的取反,也就是将1的二进制数1变成0,0变成1.

    1的源码为	00000000	0000000	  0000000 	00000001
    1的取反为	11111111	11111111  11111111	11111110
    
  2. 接下来就是对1取反的数进行分析
    11111111 11111111 11111111 11111110这个数我们不知道是那个数,但我们知道它是一个负数,因为最左侧为1是符号位,表示负数。而在计算机中,无论正数还是负数都是以补码的形式进行加减运算的,也就是说11111111 11111111 11111111 11111110在这里是一个补码,我们需要将它转换为源码,才知道这个整数。

    下面进行负数的源码、反码、补码转化(正数的源码、反码、补码是相同的,这里不过多解说):
    (-50)10的8为二进制原码为(10110010)2
    (-50)10的8为二进制反码为(11001101)2 这里是将所有除了符号位的数按位取反
    (-50)10的8为二进制补码为(11001110)2 这里是将上面的反码加一
    由上面对负数源码的学习,可以得知要想求 11111111 11111111 11111111 11111110,先对其减一,然后取反.
    减一后得到反码为 11111111 11111111 11111111 11111101
    取反后得到源码为 10000000 0000000 0000000 00000010
    也就是源码为-2
    最终答案1的取反为-2

  3. 总结:
    3.1 先对正数求补码
    3.2 然后对补码取反,包括符号位
    3.3 最后进行一个补码求原码的过程,一定要搞清概念啊。

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:书香水墨 设计师:CSDN官方博客 返回首页
评论 2

打赏作者

五毛辣条

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值