1的取反为什么是-2的详细解析
-
先求取1的取反,也就是将1的二进制数1变成0,0变成1.
1的源码为 00000000 0000000 0000000 00000001 1的取反为 11111111 11111111 11111111 11111110
-
接下来就是对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总结:
-
先对正数求补码
-
然后对补码取反,包括符号位
-
最后进行一个补码求原码的过程,一定要搞清概念啊。
本文地址:https://blog.csdn.net/qq_43332008/article/details/107203933
上一篇: 俗话说宁娶从良女,不娶过墙妻 古人这句话到底是什么意思
下一篇: [c] 万年历
推荐阅读
-
ASP中常用的函数和详细说明第1/2页
-
a2sd+状态下应用程序丢失的解决方法详细解析
-
ASP中常用的函数和详细说明第1/2页
-
详细解析颜色、类型和空间是如何影响情绪的
-
Mybaits 源码解析 (六)----- 全网最详细:Select 语句的执行过程分析(上篇)(Mapper方法是如何调用到XML中的SQL的?)
-
hashmap 为什么初始化容量是2的幂次方
-
懒惰是金 介绍几个php通用的函数第1/2页
-
Linux 操作系统的权限为什么是1,2,4 而不是 1,2,3?如何用二进制来做权限管理
-
exit(-1)或者return(-1)shell得到的退出码为什么是255
-
为什么 echo 3 . print(2) . print(4) . 5 . 'c'的结果是45c2131