添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

为什么要用补码表示

补码系统的最大优点是可以在加法或减法处理中, 不需因为数字的正负而使用不同的计算方式 。只要一种加法电路就可以处理各种有号数加法,而且减法可以用一个数加上另一个数的补码来表示,因此只要有加法电路及补码电路即可完成各种有号数加法及减法,在电路设计上相当方便

比如对于 3-2 3 = 0011 -1 = 1111 ,二进制表示就是 0011 + 1111 = 10010 10010 显然是个负数,这里并不是算的不对,而是结果产生了溢出,本来只有4位,相加的结果是5位,这样的话就是直接 去掉最高位 ,结果是 0010 = 1

另外, 补码系统的0就只有一个表示方式 ,如果只是简单的最高位是 1 0 来表示正负,那么 0 就有两种表示方式 00....00 或者 10....00 ,这样不仅仅是一种浪费,并且要判断一个数是否等于 0 ,就要比较两次了,要分别看它是不是 00....00 或者 10....00

上图是8位系统中整数的表示方式

补码到底是什么,为什么-128的补码是10000000

-128=10000000 ,是怎么得来的呢,如果按照我们教科书上的说法,负数的补码等于正数的反码加1(也又说符号位为1不变,剩下的反码加1),不管怎么说在8位系统下表示不了128,128应该等于 010000000 ,这就是9位了

计算机是怎么区分无符号有符号的

对二进制 00000001 ,无符号数表示 1 ,有符号 +1

对二进制 10000001 ,无符号数表示 129 ,有符号数表示 -127

如果把他们相加得到 1000010 可以表示 130 ,也可以表示 -126

那么计算机是怎么区分这个数到底是有符号数还是无符号数呢,其实 计算机并不区分有无符号 。计算机只存储了这三个二进制数,是我们的编译器来区分数字的类型的,定义的是有符号的,print()的就是 -126 ,定义的是无符号的,输出的就是 130

zh.wikipedia.org/zh-cn/%E4%B…

分类:
后端
  •