二进制的原码、反码和补码

数在计算机中是以二进制形式表示的,分为有符号数和无符号数。

原码、反码、补码都是有符号定点数的表示方法。

一个有符号定点数的最高位为符号位,0是正,1是副。

1.原码就是这个数本身的二进制形式。

例如:0000001 就是+1 1000001 就是-1   

2.正数的反码和补码都是和原码相同。

负数的反码是将其原码除符号位之外的各位求反。

[-3]反=[10000011]反=11111100  

负数的补码是将其原码除符号位之外的各位求反之后在末位再加1。

[-3]补=[10000011]补=11111101  

一个数和它的补码是可逆的。

3.设立补码的原因有两个:

第一是为了能让计算机执行减法:[a-b]补=a补+ (-b)补

第二个原因是为了统正0和负0正零: 00000000 负零: 10000000

这两个数其实都是0,他们的原码却有不同的表示,但是他们的补码是样的, 都是0000000

那么,000000这个补码表示的哪个数的补到呢?

其实这是一个规定,这个数表示的是-128  所以n位补码能表示的范围是  -2^(n-1)到2^(n-1)-1  比n位原码能表示的数多一个.

4.总结:

在计算机内,定点数有3种表示法:原码、反码和补码

所谓原码就是前面所介绍的二进制定点表示法,即最高位为符号位,“0” 表示正,“1” 表示负,其余位表示数值的大小。

反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。

补码表示法规定:正数的补码与其原码相同:负数的补码是在其反码的求位加1。

原文地址:https://www.cnblogs.com/zaixiachengxuyuan/p/11552724.html