机器码
要了解标题中的那些码就先了解机器码,机器码就是由0和1组成的数,亦称为Bit,是计算机中信息的表示单位,也是最小的信息表示单位(电子货币比特币的称谓来源于此)。
在机器码中最高位被称为符号位,如果为0则表示此为正数,如果为1则表示此为负数。
要知道我们的数其实都是有正负之分的,正数的完全写法应该是 +x,通常为了 讨论和书写简单 + 号是被省略的, 只有在和负数讨论时为了精准描述我们此时才会将正数的符号显式书写。
为了比较和讨论正数和负数,最好的方法是将正数和负数放在数轴上进行讨论。
我们知道以原点为起点,向左3个单位长度所得的值和向右3个单位长度所得的值,它们的绝对值是相等的,所不同的仅仅是它们的符号。这两个数在十进制中表示为 +(-)3,而 +3 在计算机的字长为8位,转换位二进制就是00000011,-3 则为 10000011。
将两个数对齐比较: 00000011
10000011
可以发现忽略符号位后,其值也是一样的,既获得的两个数的绝对值是一样的。
真值
因为第一位是符号位,所以在机器中的形式值不等于真正的数值,-3的二进制数是10000011,其真值就是-3,但其形式值是131(无视符号位转换二进制到十进制)。为了区别,计算机的数表示中将符号位的机器数对应的数值称为机器码的真值。
例如:
00000001 的真值是 +00000001 ,既 +1
10000001 的真值是 -0000001,既 -1
原码
对于一个数,在计算机中是要使用一定的编码方式进行存储的,原码就是存储其中一个具体数字的编码方式。
原码的意思是符号位加上真值的绝对值,解释就是第一位表示符号,其余表示值,那么一个8位二进制的数的表示形式就是:
[符号位]原码 = [+1]原码 = 0000 0001 [符号位]原码 = [-1]原码 = 1000 0001
因为第一位是符号位,所以这个8位二进制的取值范围是 [1111 1111,0111 1111]这样一个闭区间,转为十进制
就是[-12