">>1" equals "/2"?
">>1" equals "/2"?
可能的重复项:
>> 在 JavaScript 中
这里:
var num=10;
console.log(num/2);
num=4;
console.log(num/2);
它给了我5
和2
.
而这个:
var num=10;
console.log(num>>1);
num=4;
console.log(num>>1);
这也给了我5
和2
。
那么x/2
和x>>1
一样?但是为什么?
出于同样的原因,从正常(十进制(数字中删除最后一个数字与将其除以 10 相同(当然,忽略任何非整数余数(。
在计算机中,整数在内部以二进制(基数 2(表示。因此,每个数字代表 2 的幂,而不是我们习惯于使用十进制系统的 10 的幂。
>> 1
只是意味着将所有位向右移动一个,这是"删除最后一个数字"的另一种说法。由于数字是二进制的,这相当于除以基数,即 2。
同样,如果您需要除以 2 的任何幂,则可以使用右移位运算符来实现:除以 4,移位 2;除以 8,移位 3;依此类推。
请注意,在内部,执行移位操作通常比除法操作更有效,但任何值得一提的编译器都会为您进行此优化(这样您就不必编写混淆代码来获得性能优势 - 通常,只有当您打算直接操作位时,您才会使用 shift 运算符, 并在您打算进行数学运算时使用除法运算符(。
x>>1
是一个位移,它对数字的二进制表示进行操作。效果是x>>n
与x/(2^n)
相同(除了位移通常比除法快,因为它是较低的级别(。
当你>>某样东西时,你基本上会把它的所有位都向右移动。发生这种情况时,您将 2 位值转换为 1 位值,将 4 位值转换为 2 位值,依此类推。这有效地将数字分成两半。以数字 14 为例:1110.当你移动位时,你会得到 111 或 7。
看看这个:http://en.wikipedia.org/wiki/Division_by_two#Binary
您需要了解的有关>>
的所有信息都可以在这里和这里找到。
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 图像可以从源<img src=""/>.TEXT可以在没有javascript的情况下从外部
- 在<script src=“"></脚本>标签
- Django,HTML,JS:<img src=“#">可以在HTML中工作,但不能在JS文件中工作
- JSP<a href="">无法保存常规语句
- 在MySQL中存储映像路径与使用<img src=“"onError=“">
- $_POST值在<形式动作=“;javascript:someJSFunction()"/>
- 类似于htmls<script src=“">xaml的标签
- 为什么<车身负载=“;fn()">使用函数调用,但是window.onload=fn;使用处理程序函
- 更改URL而不使用<a href="">
- 为什么可以't我将JS代码置于<script src=“">代码</脚本>
- 如何将鼠标悬停在<img src=“">标签
- 如何设置<一个标题=“">用于erb
- 将用户输入动态地附加到<script src=“">来自Java Script中的文本框
- <a href="#">最终调用Javascript函数
- <a href="javascript:foo(this)">通过Window,我想要标记
- 使用<重置所有字段(复选框、文本、选择);body onload()">
- 如何从<a href="">到javascript函数
- IE总是在<a href="#"/>被单击
- JS:有一个新的运算符"=>&”;