带 2 个箭头和 3 个箭头的按位移位有啥区别? [复制]

Posted

技术标签:

【中文标题】带 2 个箭头和 3 个箭头的按位移位有啥区别? [复制]【英文标题】:what's the difference between bitwise shift with 2 arrows and 3 arrows? [duplicate]带 2 个箭头和 3 个箭头的按位移位有什么区别? [复制] 【发布时间】:2014-04-13 23:23:33 【问题描述】:

我以前见过>>>>>有什么区别以及何时使用?

【问题讨论】:

使用三个箭头“零填充” developer.mozilla.org/en-US/docs/Web/javascript/Reference/… 【参考方案1】:

其他人已经提供了解释。 >>> 移动所有位,甚至符号位(MSB)。 >> 将符号位保持在原位并移动所有其他位。最好用一些示例代码来解释这一点:

int x=-64;

System.out.println("x >>> 3 = "  + (x >>> 3));
System.out.println("x >> 3 = "  + (x >> 3));
System.out.println(Integer.toBinaryString(x >>> 3));
System.out.println(Integer.toBinaryString(x >> 3));

输出如下:

x >>> 3 = 536870904
x >> 3 = -8
11111111111111111111111111000
11111111111111111111111111111000

【讨论】:

【参考方案2】:

双箭头“>>”和三箭头“>>>”是在 32 位整数上定义的,因此对变量执行这些操作会将它们从非数字“转换”为数字。此外,javascript 数字存储为双精度浮点数,因此这些操作也会导致您丢失任何高于 32 的精度位。 ">>" 保留符号位(结果是有符号整数),而 >>>" 不保留(结果是无符号整数)。

http://msdn.microsoft.com/en-us/library/342xfs5s%28v=vs.94%29.aspx

为了更好的解释:https://***.com/a/1822769/780399

【讨论】:

以上是关于带 2 个箭头和 3 个箭头的按位移位有啥区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

HTML中一根线带箭头,箭头在中间且指向下方怎么做

带箭头和不带箭头的 UML 聚合的区别

在盖茨比中,扩展组件与箭头功能有啥区别[重复]

centos6.9有几个版本,分别有啥区别

程序流程图中带有箭头的线段表示的是?

请问向量的符号用LATEX怎么打呢?就是字母上面带个箭头的