“ 机器数” 根据我的理解 , 就是带符号位的二进制代码 。 8位二进制数 ,最高位表示的符号 ,其中 o
代表的是整数 ,1 代表的是负数 。如 : 1000 1111 和 0000 1111 他们虽然长得很像 ,但是其表示的意义
却有很大的差别 ,前者表示的是整数+15 而后者表示的是 -15 。
“真值” 是机器数所能表示的值 。 它有三种表示方法 : 原码 、 反码 、 补码 。
原码的取值范围是 -127 --- + 127 原码的表示虽然简单易懂 , 但是它的加法运算电路太复杂 ,不是很容易实现
反码的取值范围是 -127 -- +127
补码的取值范围是 -128 --- +127 对一个已知的补码 再次求它的补码 便能还原出真值。
那么原码 反码 和补码 我们要如何求得呢 ??
对于 上面的我们所说的 + 15 作为例子 :
我们知道 对于1111 对应的十进制数 是 8 4 2 1 , 那么 十进制+15 转化为二进制是 : 1111 他只有
四位,我们要求的是八位二进制数 , 所以 其余位置补零 ! 最高位表示符号位,所以左边的第一位 为零 。
0其余位置也是零 ,所以 +15 转化为二进制 是 : 0000 1111 。-15 与+15 唯一的区别是 符号位 为1 , 是 1000 1111 。反码就是对原码 按位取反 ,符号位不变 , 但是这个有一个前提 就是针对负数而言。正数的
原码 ,反码 , 补码 都是一样 ,没有任何的变化 。 那么 -15的反码 就是 1111 0000 补码就是对原码的
绝对值取反 然后加1 所以 -15 的补码就是 1111 0001 !
总结一下上面说的:正数的原码 反码 补码 是一样的 , 最高位都表示的是符号位 。 0 为正数 1 为负数
负数的反码是原码绝对值 按位取反 , 补码是反码加 1 ,符号位不变 。
下面在说一下进位数值之间的转换 :
二进制数---》八进制
从小数点开始,分别向左右按三位转换成对应的八进制数字字符 。最后不足三位的 补零 。
二进制数 1101101 转换为 八进制数
二进制 001 101 101
八进制 1 5 5
所以二进制数转换为 八进制数 为 (155)o
二进制转换为 十六进制 是每四位一组 与转化为八进制 基本相同 , 不再赘述 。
对于十进制 与二进制 八进制 十六进制之间的转换 , 分别是 除 2 , 8 , 16 。
八进制 十六进制 转换为 二进制 ,是二进制 转换为十六进制 ,八进制 的逆运算。 每一位 分别用 三位和四位二进制表示 。