1. 移位计算
k是n所占的位数
例如:java中的int 是 4个字节即32位,long是8个字节即64位
if (m < k)
m = k;
else
m = m % k;
n >> m = Math.floor(n / 2^m); // floor(x)是对x向下取整的意思,即比x小的最接近的整数,
// 正数就是去掉x的小数位,负数就是比x小的负数。
n << m = n * (2^m);
2. 二进制移位计算
1111 1111 1110 1001
||
\/
1111 1111 1110 1000
i 正数 :移动相应的位数,并补零。
例如:int 39 << 4 = 624:
0000 0000 0010 0111
||
\/
0000 0010 0111 0000
ii 负数 :移动相应的位数,没移动一位符号位补1。
注意负数在计算机中是用它的补码表示的。
例如:int -23 >> 3 = -3
1111 1111 1110 1001
||
\/
1111 1111 1111 1101
位运算与移位操作
本文介绍了位运算中的移位操作原理及应用,包括正数和负数在不同移位方式下的表现形式,并通过具体例子展示了如何进行左移和右移操作。
1233

被折叠的 条评论
为什么被折叠?



