">> 1"等于"/ 2"?

Der*_*會功夫 -1 javascript binary bit-manipulation

可能重复:
>>在javascript中

这里:

var num=10;
console.log(num/2);
num=4;
console.log(num/2);
Run Code Online (Sandbox Code Playgroud)

它给了我52.

还有这个:

var num=10;
console.log(num>>1);
num=4;
console.log(num>>1);
Run Code Online (Sandbox Code Playgroud)

它也给了我52.
x/2是一样的x>>1吗?但为什么?

Cam*_*ron 13

出于同样的原因,将最后一位数字从正常(十进制)数字中删除与将其除以10相同(当然,忽略任何非整数余数).

在计算机中,整数在内部用二进制表示(基数2).因此,每个数字代表2的幂,而不是我们习惯于十进制系统的10的幂.

>> 1只是意味着将所有位正确地移位,这是另一种说"丢弃最后一位数"的方式.由于数字是二进制的,所以相当于除以基数,即2.

类似地,如果你需要除以2的任何幂,你可以使用右移运算符:除以4,移2; 除以8,移3; 等等.

请注意,在内部,执行移位操作而不是除法操作通常更有效,但任何有价值的编译器都会为您执行此优化(这样您就不必编写混淆代码来获得性能优势 - 通常,当你的目的是直接操作位时,你只能使用移位运算符,而当你打算做数学运算时,你可以使用除法运算符).