在计算机中,负数一般以补码的形式来存储。
以8位二进制为例,假设我们要表示-1,我们首先写出1的二进制形式,即00000001。然后得到这个数的反码,即将0和1全部取反,得到11111110。然后再对这个反码加1,得到11111111,这就是-1在8位二进制下的补码表示。所以,-1在计算机中一般不会被存储为10000001,而是会被存储为11111111(在8位二进制下)。当然,具体的存储方式可能会因为计算机的位数不同而有所不同,例如在16位、32位或64位的计算机中,-1的二进制表示会有所不同。但无论在哪种计算机中,-1的二进制表示都会以补码的形式存在。在显示负数的时候,计算机会将补码转换为原码,再显示出来。例如,如果我们读到一个二进制数11111111(在8位二进制下),我们就知道这个数 是-1。
所以 1为0000 0001
127为 0111 1111
-1为1111 1111
-2为1111 1101
-3为1111 1100;
-127 为1000 0001 (补码减一在取反 1111 1111 ->1111 1111 (-127)
-128 为1000 0000 减一为0111 1111 取反为1000 0000 如果是2的7次方是128呢.
好的做一题
提示: 2的32次方为4294967296也就是100000000(32个0)...... 2的31次方为2147483648 为100000.....
所以-1u为11111(32个1)就是4294967295 (比2的32次方小一个数)
下面为判断题 1为true 2为false
0==0u 为 1 ( 注意后面加了u表示强制类型转换 ,比较的两个数都将转换为无符号类型 再进行转换)
-1<0 为 1
-1<0u 为0 -1为111111111.....(补码是这样的) 转化为无符号数自然大于0
2147483647u>-2147483647-1 为0,
详解: 首先2147483647的二机制为 111111111....(31个)
而-2147483647-1为 -2147483647-1为 -2147483648 为 1000000000...变为无符号整数为2的31次方,也就是2147483648 所以大于2147483647
(unsigned)-1>-2 1 -1为1111 1111 -2为 1111 1110 转化为无符号后正确
像-2147483647-1==2147483648u
-2147483647-1为-2147483648 就是1 0000(一共31个零)转化为无符号型为212147483648故正确.