`
jamie.wang
  • 浏览: 340105 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

关于移位

阅读更多

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
 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics