01.补码

Posted nutshelln

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了01.补码相关的知识,希望对你有一定的参考价值。

1.求补

0~0xFF一共256个数,此范围定义为表达范围,对于一个数A,找出另一个数B,使得 A+B==0,进位忽略不管。对A求补定义为neg(A),求补的速算是“取反加一”

例如:

0011 1100

+     1100 0011

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

     10000 0000(进位不管,结果为0

 

2.求补性质

A < 0,则neg(A) > 0

A > 0,则neg(A) < 0

A = 0,则neg(A) = 0

 

3.补码表示数字时,如果为负数,则转化为补码后保存,例如:

A - B

=A + neg(B)

 

4.乘法示例:

A * 10110b

= A * (10000b + 100b + 10b)

=A<<4 + A<<2 +A<<1

 

5.除法示例:

 A / c

=A * (1/c)

=A * (2^n / C) * (1 / 2^n)

=(A * (2^n / C) )>>n

 

此处2^n可以换成3^n4^n10^n

 

6.减法示例:

A - B

=A+ (100h - B) - 100h

=A+ neg(B) - 100h

=A+ ~B + 1 - 100h

=A+ ~B + 1 (进位丢失)

以上是关于01.补码的主要内容,如果未能解决你的问题,请参考以下文章

01.补码

寻找 DFA 的补码?

关于-32768补码的问题

01Java基础语法(常量进制转换原/反/补码变量和数据类型)

小数的二进制补码

计算机为何采用补码表示负数 & int类型的表示范围和移位操作