首页 > 编程知识 正文

-3的补码(0的补码是多少)

时间:2023-05-06 15:57:15 阅读:95205 作者:26

1 :补数的定义

图1

从上述定义可以看出,对于负数,

图2

这里的x表示负数。 例如,x=-1011,n表示负数x不考虑符号位的数字位数。 在这里要四年了。 图2是

图3

这意味着如果将负数补数加上该负数的绝对值,则为0。 例如

图4

这里,1011是-5补数,最高位比特是符号比特,根据图3的定义,这里的n是3,所以是-5的补数

如果1011加上-5的绝对值5,即0101,则答案为2的4次方,但此时的结果超出了上面的数字位数(包括4位符号),因此会发生最高位被截断,变为0的现象。

2 :补数的显示范围

如果以1字节8位,用原始代码表示包含0的正整数,则能够表现0-255,即2^8=256,总共256种状态,从全部0到全部1的各种排列的组合。 如果表示负数,则符号位必须占用1位。 最高位位,1表示负数,0表示正数。 因此,其绝对值的最大范围为0-127,也就是2^7=128,总共为正负各128种状态。 如果不进行特别的处理,此时0占有两个符号,10000000为负0,000000为正0。因此,认为利用负0,即遇到负数时,用补数表示就可以解决这个问题,遇到了正或0 因此,该负0在用补数算法处理后,自然被利用,用来表示-128

10000000这个负0是为了证明-128补数的正确性而考虑的

10000000

01 1111 11

--------- -请参见

1 1 1 11111

011111111是127的原始代码,因此上述运算计算的结果为(-128 127 )。 结果显然应该是-1,但111111111是-1的补数。 因为其他可以类推,所以将10000000表示为-128的补数是正确的。

上述运算还表明,补数的重要功能是将减法(127-128 )运算变为加法)-128 127 )运算。

综合起来如下。

补数:以8位补数表示的数量范围为-128~127。

3 )变形补充代码

在小数的情况下,其补数定义如下

图5

也就是说,在小数补数的定义中,其整数部分的位数用于表示符号的位数。

图6

图6的定义也是关于小数的,其中100是二进制数,表示数字的4。 这个定义意味着每小数有两个符号位。

图7

图8

图8是两个正小数的总和,在这种情况下没有发生溢出。 这是因为两个小数都小于0.5,所以它们之和小于1。 00.11 00.10时,结果为01.01,在这种情况下会发生溢出。 因为两个小数之和已经超过了1。 进而例如

图9

这是两个负小数补数相加,结果也没有溢出。 但是,如果仔细观察,就会发现在加法运算的过程中发生了从小数的最高位位到符号位的进位,但是为什么没有发生溢出呢? 这是因为11.10101和11.10111这几个小数补数的数值部分都大于0.5。 这意味着两个负小数的绝对值小于0.5。 另一方面,如果将两个绝对值小于0.5的小数相加,则绝对值不会大于1。 补数加法中,由于加法的绝对值超过1,会发生进位,但由于是两个负数的加法,也就是说

11.11=-0.75

11.10=-0.5

--------------------

11.01=-保留1.25小数部分=-0.25

其最高位的1被去除,剩下的11.01,即上面两个负小数补数相加而产生的进位正好被它们的符号比特的相加抵消。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。