使用位移添加两个十六进制数字javascript

时间:2014-11-20 08:25:03

标签: javascript hex bit-shift

我试图在JavaScript中添加两个数字,以十六进制数表示,以下列方式:

var a = 0x0028 << 16 + 0x0010;

我希望得到的是0x00280010。不幸的是,JavaScript等于40,(当然是0x0028)。如果我在不添加0x0010的情况下移位这些位,一切正常,我得到2621440,即0x280000。为什么添加0x0010会产生这样的结果。 我对这种算术并不擅长,我在做什么或者期待出错? 提前谢谢大家:))

2 个答案:

答案 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