1.对于int型数据,若是负数,第0位为1;正数则为0.那么32位机上范围是-2,147,483,648~~2,147,483,647.
问题一:为什么负数比正数多一个呢?
问题二:最小负数-2,147,483,648转换成而二进制是怎么样的呢?
问题三:那int 型数据二进制数字 1000 0000 0000 0000 0000 0000 0000 0000转换成十进制是多少呢?
1.计算机内部存储是按补码的形式存储的,最高位为0表示正数,其原码就是补码本身.
最高位为1表示负数.而0占一个补码的(000 ... 000).这就是为什么正数少一个,因为0的最高位也是0.
2.根据补码最小负数应该是(以8位举例)10000000(按位取反为1111 1111,再加1为1000 0000,真值为-256)
3.还是按位取反再加1 1000 0000 --->1111 1111--->1000 0000(真值-256此时,最高位是符号位也是数值位).
注意一下在真值1000 0000表示的时候最高位1是数值位.而补码不同(应该按照转换规则,是什么就是什么).
倚天照海花无数,流水高山心自知。