二进制减法操作方法(二进制移位操作)

生活科普1年前 (2023)发布 爱搜
11 0 0
广告也精彩

二进制数有两种移位操作:左移<< , 右移>>

1、左移运算 <<:
a<<b,表示将二进制数a整体向左移动b位,右侧b位用0补充。

例如 :00000100<<2 =00010000

二进制100是十进制数4,左移2位1000是十进制数8。

若左移时抛弃的高位不包括1,则每左移一位,相当于乘以2。a << b值实际上是a乘以2的b次方,因为二进制数后添加一个0相当于该数乘以2。
通常a<<1比a*2快,所以可以用左移一位代替程序中乘以2的操作。

2、右移运算符>>

a>>b,表示将二进制数a整体向右移动b位。
右移分为两种:逻辑右移和算术右移

(1)逻辑右移,在右移过程中用0填充左侧位置。

例如 :00001100>>2 =00000011

对于符号数00011000进制数12,逻辑右移2位,左侧用0填充,变成0000110进制数3。

(2)算术右移,在右移过程中,左侧填充符号位。

例如 :10000100>>2 =11100001

00000100>>2 =00000001

对于符号数为10000100,算术右移2位,左侧填充1(1为符号位),变成110001。

对于符号数0000100,算术右移2位,左侧填充0(0为符号位),变成000001。

右移运算符是C语言中的算术右移运算符,即左侧用符号位填充。
如果右移时高位不是1(即不是负数),放弃的低位不包括1,则操作数每右移一位,相当于该数除以2。a>>b值相当于a除以2的b次方(取整)。我们经常使用它>> 1代替除以2,使用>>替代除法操作可以大大提高程序效率。

总结:

移动后的空位需要用0或1填充,无论是左移还是右移。
在左移过程中,右侧用0填充。
右移分为逻辑右移和算术右移。左补0还是补1取决于移数是正还是负。
一个数左移n位相当于一个数乘^n,将一个数右移n位相当于将这个数除以2^n。

常见的二进制数移位转换操作

,

© 版权声明
广告也精彩

相关文章

暂无评论

暂无评论...