C---04---数值在计算机中储存-原码-反码-补码

原码

1.一个数的源码是原始的二进制码。
2.最高位是符号位,0表示正,1表示负。
3.数值位就是数值本身的绝对值的二进制数。
4.负数的原码是在绝对值的基础上,最高位为1。

示例

十进制数 原码
+13 0000 1101
-13 1000 1101
+0 0000 0000
-0 1000 0000

使用原码存储数据会产生两个问题

1.数值0有两种表示方法。
2.正数和负数相加,结果不正确(计算机只会加法,减法的实质就是加法)。


反码

1.对于正数,反码和原码相同。
2.对于负数,符号位不变,其他部分按位取反。

示例

十进制数 反码
+13 0000 1101
-13 1111 0010
+0 0000 0000
-0 1111 1111

使用反码存储数据好处和问题

问题 好处
数值0有两种表示方法 解决了正数和负数相加的问题

补码

1.计算机中存储数据都是补码形式,为了解决负数存储问题。
2.对于正数,原码、补码、反码都相同。
3.对于负数,其补码为其反码加1。
4.补码符号位不变,其他位求反,最后整个数加1,得到原码。

示例

十进制数 补码
+13 0000 1101
-13 1111 0011
+0 0000 0000
-0 0000 0000

使用补码存储的意义

使用补码存储的意义
1.统一了0的编码
2.将减法运算变为加法运算
3.两个用补码表示的数相加时,如果最高位有进位,则进位被舍弃

你可能感兴趣的:(C---04---数值在计算机中储存-原码-反码-补码)