黑马程序员技术交流社区

标题: 搜索的关于为何正数最高位为0 负数最高位为1的解答,在..... [打印本页]

作者: 潮汐海歌    时间: 2015-9-27 10:39
标题: 搜索的关于为何正数最高位为0 负数最高位为1的解答,在.....
1个字节它不管怎么样还是只能表示256个数,因为有符号所以我们就把它表示成范 围:-128-127。它在计算机中是怎么储存的呢?可以这样理解,用最高位表示符号位,如果是0表示正数,如果是1表示负数,剩下的7位用来储存数的绝 对值的话,能表示27个数的绝对值,再考虑正负两种情况,27*2还是256个数。首先定义0在计算机中储存为00000000,对于正数我们依然可以像 无符号数那样换算,从0000000101111111依次表示1127。那么这些数对应的二进制码就是这些数的原码。到这里很多人就会想,那负数是 不是从1000000111111111依次表示-1-127,那你发现没有,如果这样的话那么一共就只有255个数了,因为10000000的情况 没有考虑在内。实际上,10000000在计算机中表示最小的负整数,就是这里的-128,而且实际上并不是从1000000111111111依次表 -1-127,而是刚好相反的,从1000000111111111依次表示-127-1
0和正整数就是原码
负数以补码形式存储

举个例子,假如我设定一个“总数”是10,我想表示-3,我就可以用7表示。啥意思呢,就是说负数我表示不了那个‘-’,我就用一种一一对应的方法,3本来对应-3,而现在对应10-3,也就是7。在这种情况下,负数的范围是5到10,正数的范围是1到4。






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2