前言
一个数值在计算机中是以二进制存在的,我们管这样的数值叫“机器数”,而表示机器数的范围和“机器字长”息息相关。
所以,在学习原码,补码,反码之前,可以先了解一下“机器字长”的概念。
本文主要讲原码,补码,反码的计算方式。
原码
比如一个十进制数7,它的二进制可以表示为0000 0111。
从左到右,第一位表示符号位,0表示正数,1表示负数。
所以7的原码就是 0000 0111,那么-7的原码就是1000 0111。
以“机器字长”为8位的二进制为例,刨除第一位的符号位,其实它有7位用来表示数值的取值范围,也就是-2^7-1 到 2^7-1,换算成十进制就是-127到127
反码
反码的运算规则取决于符号位。
如果是正数,那么 原码=反码。
如果是负数,符号位不变,数值位按位取反。
我们还是以7(0000 0111)为例。
那么7的反码就是 0000 01111
如果是-7(1000 0111)呢?
-7的反码是 1111 1000
补码
补码的运算规则是:
如果是正数,原码=补码。
如果是负数,补码=反码+1
还是以7(0000 0111)为例:
因为7是正数,所以补码=原码,0000 0111
如果是-7(1000 0111)呢?
我们需要先计算-7的反码。反码为 1111 1000.
然后在反码值上+1,补码为 1111 1001
后序
对于软考而言,里面还设计了很多其他“码”,比如海明码,CRC码,以后再开篇博客学习。
网友评论