“>>”是啥意思? [复制]

Posted

技术标签:

【中文标题】“>>”是啥意思? [复制]【英文标题】:What does ">>" mean? [duplicate]“>>”是什么意思? [复制] 【发布时间】:2011-12-27 17:37:05 【问题描述】:

可能重复:What do these operators do?

我正在为 html 5 的画布使用一些 javascript。我正在查看一些现有的代码,我发现了以下内容:

element.height >> 1
element.width >> 1

它被用作一些算术的一部分。

如果这有帮助,我也在使用prototype.js。

【问题讨论】:

Rigt shift. 应该按位移动数字。 请注意,一般来说,使用移位运算符进行除法/乘法可能是个坏主意——对于没有接触过 C/C++ 等的程序员来说,意义是模糊的,不像在 C 中他们会可能比仅使用普通运算符要慢:***.com/questions/337355/… 【参考方案1】:

这是一个bitshift 运算符。

【讨论】:

【参考方案2】:

>> 是移位运算符。所以>> 1 基本上将左边数字的二进制表示向右移动了一位。这等于整数除以 2。

所以element.height >> 1 等于Math.floor( element.height / 2)

【讨论】:

但请注意,JavaScript 实际上并没有整数除法。如果(例如)n == 325,那么n / 2 == 162.5【参考方案3】:

Shifting(位移位)运算符。

1 << 1

这会将位模式00000001 向左移动一次(用0s 填充)- 你得到00000010,即2

1 << 2

将它移动 2,得到00000100,即4


它在实现二进制协议时很有用,其中只有 2 位可能意味着什么。使用 shift 可以去掉其余部分。

【讨论】:

【参考方案4】:

这是一个符号传播的右移;完整的解释在这里:https://developer.mozilla.org/en/JavaScript/Reference/Operators/Bitwise_Operators#.3E.3E_%28Sign-propagating_right_shift%29.

【讨论】:

【参考方案5】:

这是符号传播右移运算符,它将第一个操作数的二进制表示的数字向右移动第二个操作数指定的位数,丢弃任何向右移动的数字。最左边位的副本从左边开始添加,从而保留数字的符号。

因此,在您的情况下,所有内容都向右移动了一个位置。

【讨论】:

以上是关于“>>”是啥意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在 python 中, ++x 是正确的语法。 “++x”是啥意思? [复制]

“?”是啥意思?在 Erlang 中是啥意思? [复制]

“||”是啥意思在 var 语句中是啥意思? [复制]

||= 是啥意思? [复制]

“?”是啥意思?调用jsp时标记是啥意思? [复制]

";" 是啥意思?在“if”块内是啥意思? [复制]