相关疑难解决方法(0)

>>>和>>之间的区别

运算符>>>>>Java 之间有什么区别?

java syntax operators

354
推荐指数
7
解决办法
19万
查看次数

按位运算 - 零填充右移(>>>)用法?

一般来说,bit shift(>> , <<)允许我们分频/乘以^2

示例:

      9 (base 10): 00000000000000000000000000001001 (base 2)
                   --------------------------------
 9 >> 2 (base 10): 00000000000000000000000000000010 (base 2) = 2 (base 10)
Run Code Online (Sandbox Code Playgroud)

= 2(基数10)

对于负数:

同样,-9 >> 2收益率-3,因为符号被保留:

     -9 (base 10): 11111111111111111111111111110111 (base 2)
                   --------------------------------
-9 >> 2 (base 10): 11111111111111111111111111111101 (base 2) = -3 (base 10)
Run Code Online (Sandbox Code Playgroud)

但是看看>>>哪些行为对于正数而言是相同的,但是对于负数,行为却不同:

MDN

位从左侧移入

0从左边找不到任何理由/用法从左边移动 (这使得整个数字为正):

       -9 (base 10): 11111111111111111111111111110111 (base 2)
                     --------------------------------
 -9 >>> 2 (base 10): …
Run Code Online (Sandbox Code Playgroud)

javascript binary bit-manipulation

8
推荐指数
2
解决办法
6152
查看次数

为什么-2 >>> 1等于Java中的2147483647

-2一个人的补充是100000 ... 01

-2两个补码是1000000 ...... 10

-2 >>> 1 
Run Code Online (Sandbox Code Playgroud)

根据>>>定义,左侧移位为0

应该是这样的 01000......1,为什么变成0111111..11什么?

java twos-complement operator-keyword ones-complement

3
推荐指数
1
解决办法
129
查看次数