我正在尝试在Javascript中执行一些按位操作,
0xff000000 | 0x00aabbcc
我期望给予我
0xffaabbcc // == 4289379276;
然而,当运行它时,我得到结果-5588020。我希望这与javascript中的按位操作仅在32位数上运行这一事实有关,但不是这两个数字< = 32bit无论如何?有人能指出我出错的地方以及如何获得理想的结果吗?
我尝试了How to do bitwise AND in javascript on variables that are longer than 32 bit?概述的技术但没有运气。
无法发布我自己的答案,因此将其放在此处供其他人发帖...
感谢所有评论。事实证明,Javascript bitwise operator confusion的答案涵盖了这一点。事实证明,JavaScript在32位SIGNED整数上进行按位运算。我的上面的oepration大于最大可能范围,因此结果返回为signed int。解决方案是将输出右移0,这显然告诉JS将其视为无符号。
(0xff000000 | 0x00aabbcc)>>>0
答案 0 :(得分:2)
你得到正确的十六进制值,它不是你正在寻找的整数值。
4289379276 - 2 ^ 32 = -5588020
我认为这是否足够取决于您尝试对结果做什么。