计算机为什么选用二进制补码(3)---有符号数界限
2013-06-16 22:22
267 查看
阿拉伯数字只有一个0, 但是按照计算机的处理应该有两个0,一个+0,一个-0;
假设是8位,+0和-0的原码分别是:
+0=0000 0000 -0=1000 0000
但是他们的补码是一样的,都是00000000,因此0的补码形式只有一种:
那就是0000 0000
那8位二进制有符号整数能表示的最大范围是多少呢?
如果按照原码进行表示,1111 1111 - 0111 1111 即:
-127 到+127 再加一个0 ,255个数字;
但是教科书上又明明说8位二进制有符号整数的范围是:-128 到+127,即 -2^(n-1)到2^(n-1)-1
这又是为什么?
原因就是计算机运算时使用补码进行的,
1000 0000 这个数字被强制规定就是-128的补码:
-128+1=-127
(1000 0000 )补+(0000 0001)补=1000 0001
-127的补码就是1000 0001 ,符合运算规律;
故n位有符号数表示的范围是: -2^(n-1) 到 2^(n-1)-1
故n位无符号数表示的范围是:0 到2^n-1
8位二进制有符号整数中:-128是没有原码的,其原码不存在,原码中有两个0,即+0和-0。
假设是8位,+0和-0的原码分别是:
+0=0000 0000 -0=1000 0000
但是他们的补码是一样的,都是00000000,因此0的补码形式只有一种:
那就是0000 0000
那8位二进制有符号整数能表示的最大范围是多少呢?
如果按照原码进行表示,1111 1111 - 0111 1111 即:
-127 到+127 再加一个0 ,255个数字;
但是教科书上又明明说8位二进制有符号整数的范围是:-128 到+127,即 -2^(n-1)到2^(n-1)-1
这又是为什么?
原因就是计算机运算时使用补码进行的,
1000 0000 这个数字被强制规定就是-128的补码:
-128+1=-127
(1000 0000 )补+(0000 0001)补=1000 0001
-127的补码就是1000 0001 ,符合运算规律;
故n位有符号数表示的范围是: -2^(n-1) 到 2^(n-1)-1
故n位无符号数表示的范围是:0 到2^n-1
8位二进制有符号整数中:-128是没有原码的,其原码不存在,原码中有两个0,即+0和-0。
相关文章推荐
- 计算机为什么选用二进制补码(4)--CPU怎么看有符号数和无符号数
- 计算机为什么选用二进制补码(4)--CPU怎么看有符号数和无符号数
- 计算机为什么选用二进制补码(1)---原码、反码、补码
- 计算机为什么选用二进制补码(2)---选用补码原因
- 为什么计算机选用二进制
- 为什么从事尖端科研的研究人员仍然在使用计算机时代早期发明的语言?
- javascript 闭包应用, 阿隆佐·邱奇想法——计算机实现运算,而不需要0、1、2、3这些数字和+、-、*、/这些符号。
- 为什么int类型字段在mysql中默认int(11) 无符号默认int(10)?
- 为什么要读计算机研究生
- 为什么会出现LNK2005"符号已定义"的链接错误?
- 为什么文件存储要选用B+树这样的数据结构?
- 为什么翻译类计算机图书的质量这样差
- 为什么会出现__imp____glutInitWithExit@12和无法解析的外部符号?
- 计算机中为什么要用补码表示
- 有符号数中负数为什么比整数多一个
- 为什么计算机要采用二进制
- 在 ACM竞赛中,为什么美国的公认的计算机名校,如 MIT,斯坦福、加州伯克利、卡内基梅隆,表现不如中国和俄罗斯的高校?
- 漫画:为什么搞计算机工作的人总是看上去很清闲(转)
- 吴军的谷歌方法论|第004封信|为什么计算机不是万能的
- 为什么不去读顶级会议上的论文?适应于机器学习、计算机视觉和人工智能