JavaScript: true >> 0 = 1 是怎么来的?
JavaScript: How does true >> 0 = 1?
我一直在四处寻找答案,但我所能找到的只是为什么
true == 1 = true
false == 0 = true
我仍然不明白 JavaScript 如何获取 Boolean
类型并将其添加到 int
类型
true >> 0 = 1
false >> 1 = 0
首先,true
在 JavaScript 中隐式转换为 1
(在控制台中尝试 Number(true) + 1
,这将产生 2
)。
此外 >>
将 数字 的 位 向右移动,丢弃移出的位。因此 true >> 0
除了将 true
隐式转换为 1
之外什么都不做(因为没有位被移动)。
对于第二个例子,false
被隐式转换为0
和因为移位的位被丢弃,移位对结果没有影响.试试false >> 1000
,还是0
.
可以找到更好的解释here,感谢@adam-beck,他还补充了另一个非常好的观点:
If you don't know much about bit shifting, bitwise operators, or even working with binary numbers, know that when you shift ( >> or <<) by 0 you aren't changing the number at all: 152 >> 0 === 152
我一直在四处寻找答案,但我所能找到的只是为什么
true == 1 = true
false == 0 = true
我仍然不明白 JavaScript 如何获取 Boolean
类型并将其添加到 int
类型
true >> 0 = 1
false >> 1 = 0
首先,true
在 JavaScript 中隐式转换为 1
(在控制台中尝试 Number(true) + 1
,这将产生 2
)。
此外 >>
将 数字 的 位 向右移动,丢弃移出的位。因此 true >> 0
除了将 true
隐式转换为 1
之外什么都不做(因为没有位被移动)。
对于第二个例子,false
被隐式转换为0
和因为移位的位被丢弃,移位对结果没有影响.试试false >> 1000
,还是0
.
可以找到更好的解释here,感谢@adam-beck,他还补充了另一个非常好的观点:
If you don't know much about bit shifting, bitwise operators, or even working with binary numbers, know that when you shift ( >> or <<) by 0 you aren't changing the number at all:
152 >> 0 === 152