详解计算机内部存储数据的形式 二进制数(2)

移位运算也可以通过数位移动来代替乘法运算和除法运算。左移两位后数值变成


了原来的 4 倍。 十进制数左移后会变成原来的 10 倍、 100 倍、 1000 倍……同样,二进制数左移后就会变成原来的 2 倍、 4 倍、 8倍 …… 反之, 二进制数右移后则会变成原来的1/2、1/4、1/8…


四、表示负数的“补数”


二进制数中表示负数值时, 一般会把最高位作为符号来使用, 因此我们把这个最高位称为符号位。符号位是 0 时表示正数 , 符号位是1 时表示负数。


那么-1 用 8 位二进制数来表示的话是什么样的呢? 可能很多人会认为“1 的二进制数是 00000001, 因此-1 就是 10000001”,但这个答案是错的, 正确答案是

11111111。


计算机在做减法运算时, 实际上内部是在做加法运算。 用加法运算来实现减法运算, 为此, 在表示负数时就需要使用“二进制的补数”。补数就是用正数来表示负数。


补数如何获得? 只需要将二进制数的各数位的数值全部取反 ,然后再将结果加 1


用 8 位二进制数表示- 1 时, 只需求得 1,也就是 00000001 的补数即可。 具体来说, 就是将各数位的 0 取反成 1,1 取反成 0, 然后再将取反的结果加 1, 最后就转化成了 11111111


详解计算机内部存储数据的形式 二进制数(2)


详解计算机内部存储数据的形式 二进制数(2)


那么,对于一个补数,如何知道它所代表的负数值是多少呢?这时我们可以利用负负得正这个性质。补数代表一个负数,那么补数的补数代表一个正数,这个正数取负就是这个补数的值。如 11111110,最高位是1,因此代表一个负数,11111110取反再加1为00000010。 这个是 2 的十进制数。 因此,11111110 表示的就是-2。


五、逻辑右移和算术右移的区别


当二进制数的值表示图形模式而非数值时,== 移位后需要在最高位补 0==。 类似于霓虹灯往右滚动的效果。 这就称为逻辑右移


将二进制数作为带符号的数值进行运算时, 移位后要在最高位填充移位前符号位的值( 0 或 1)。 这就称为算术右移。即如果数值是用补数表示的负数值, 那么右移后在空出来的最高位补 1, 就可以正确地实现 1/2、 1/4、 1/8 等的数值运算。 如果是正数, 只需在最高位补 0即可。



详解计算机内部存储数据的形式 二进制数(2)

上一篇:windows下的快速搜索工具EveryThing小工具推荐


下一篇:计算机网络之数据链路层(下)