JavaScript 中的符号传播右移和零填充右移之间的区别
difference between Sign-propagating right shift and Zero-fill right shift in javascript?
据我所知,
符号传播右移(a>> b(:将二进制表示中的 a 向右移动 b 位,丢弃移出的位。
例如:8>>2 将返回 2.因为二进制 1000 将右移 2 次并返回 0010。
零填充右移(a>>> b(:将二进制表示中的 a 向右移动 b,丢弃移出的位,并从左移零。
例如:8>>2 返回 2.it 也重新调整相同。
那么>>
运算符和>>>
运算符有什么区别,为什么 JavaScript 有两个运算符而不是一个,或者如果我错了,那么请指导我获得正确的概念?
按位运算符假定其操作数是 32 位有符号整数。
以 2 为基数的00000000000000000000000000001000
等于以 10 为基数的8
。
在
8 >> 2
中,符号传播移位运算符(>>(将二进制数移位两位,保留符号(这是第一位(:
以 2 为底的00000000000000000000000000000010
等于以 10 为基数的 2
。
在8 >>> 2
中,零填充右移运算符(>>>(将二进制数移位两位,用0填充左位:
以 2 为底的00000000000000000000000000000010
等于以 10 为底的 2
它们是相同的,仅仅是因为正二进制数的第一个位是零。
来自MDN:
对于非负数,零填充右移和符号传播 右移产生相同的结果。
然而,对于负数,情况看起来有所不同:
以 2 为底的11111111111111111111111111111000
等于以 10 为基数的-8
。
在-8 >> 2
中,符号传播右移运算符(>>(将二进制数移位两位,保留符号:
以 2 为基数的11111111111111111111111111111110
等于以 10 为基数的 -2
。
在-8 >>> 2
中,零填充右移运算符(>>>(将二进制数移位两位,用0填充左位:
以 2 为底的00111111111111111111111111111110
等于以 10 为基数的 1073741822
。
- 如何设置html元素填充的动画
- 如何使用jquery在填充自动完成的值后使文本框只读
- 如何通过ajax刷新JSF填充的javascript变量
- 动画制作/减缓元素填充移除元素留下的空间
- JavaScript 中的符号传播右移和零填充右移之间的区别
- 意外的右移操作员行为
- 试图从数组中只移除字符串元素,但无法向右循环
- 右移运算符 - Javascript
- JavaScript 零位左移和右移等效于 Python 中的
- 这个Javascript是如何向右填充的
- 如何在PHP中执行正确的无符号右移
- 移除条形图Highcharts.js中的填充
- 按位左移和右移计算在javascript
- 我试着把盒子从左移到右,然后再移回来,但它在几个周期后崩溃了
- 数组的下标是否被移到了正确的位置向左还是向右
- 无符号右移函数对负输入不起作用
- 使用核心Javascript向左和向右填充
- 左箭头和右箭头在移出图像时不会淡出
- 操作符>>>(零填充右移)在Array.prototype.find (polyfill)
- 如何理解d3中的'零填充右移' (' >>> ').平分线的源代码