我试图在JavaScript中添加两个数字,以十六进制数表示,以下列方式:
var a = 0x0028 << 16 + 0x0010;
我希望得到的是0x00280010。不幸的是,JavaScript等于40,(当然是0x0028)。如果我在不添加0x0010的情况下移位这些位,一切正常,我得到2621440,即0x280000。为什么添加0x0010会产生这样的结果。 我对这种算术并不擅长,我在做什么或者期待出错? 提前谢谢大家:))
答案 0 :(得分:3)
使用括号:+
优先于<<
。
var a = (0x0028 << 16) + 0x0010 // note the brackets.
参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
答案 1 :(得分:1)
在移位周围放置括号,因为它的优先级低于加号(see this page)
a = (0x0028 << 16) + 0x0010
> 2621456