接下来我们就一起来看看表示负数的方法和右移的方法:
二进制数中表示负数值时,一般会把最高位作为符号来使用,因此我们把这个最高位称为符号位。符号位是0时表示正数,符号位是1时表示负数。
计算机在做减法运算时,实际上内部是在做加法运算。用加法运算来实现减法运算,为此,在表示负数时就需要使用“二进制的补数”。补数就是用正数来表示负数。
为了获得补数,我们需要将二进制数的各数位的数值全部取反然后再将结果加1。例如,用8位二进制数表示-1时,只需求得1,也就是00000001的补数即可。具体来说,就是将各数位的0取反成1,1取反成0,然后再将取反的结果加1,最后就转化成了11111111(图2-5)。
负数表示有误时得情况如下:
负数表示正确的情况:
逻辑右移和算数右移的区别
右移有移位后在最高位补0和补1两种情况。当二进制数的值表示图形模式而非数值时,移位后需要在最高位补0。类似于霓虹灯往右滚动的效果。这就称为逻辑右移。例如图2-9
将二进制数作为带符号的数值进行运算时,移位后要在最高位填充移位前符号位的值(0或1)。这就称为算术右移。如果数值是用补数表示的负数值,那么右移后在空出来的最高位补1,就可以正确地
实现1/2、1/4、1/8等的数值运算。如果是正数,只需在最高位补0即可。
只有在右移时才必须区分逻辑位移和算术位移。左移时,无论是图形模式(逻辑左移)还是相乘运算(算术左移),都只需在空出来的低位补0即可。
符号扩充就是指在保持值不变的前提下将其转换成16位和32位的二进制数。
标签:右移,运算,二进制,数值,负数,便于,补数,2.4 From: https://www.cnblogs.com/z1218/p/17092973.html