bithift的成本和从整数获取位序列

时间:2017-06-18 11:06:39

标签: java header bit-shift

我有一个32位整数,表示文件的标题。

AAAAAAAA AAABBCCD EEEEFFGH IIJJKLMM

因此,我需要获取整数的特定部分,以找出它具有的价值。我目前通过使用位移来获取位序列。

E.g。

    (HEADER >> 19) & 3;

    (HEADER >> 17) & 3;

    (HEADER >> 12) & 15;

    (HEADER >> 10) & 3;

    (HEADER >> 6) & 3;

我这样做了数百万次,所以我需要它快速。

所以我的问题是:

这是最快的方式,还是有更好的方式?

Integer >> 1的费用是否与Integer >> 20相同?

首先使Integer成为一个String,然后使用substring获取位序列,最后解析回int会更快吗?

1 个答案:

答案 0 :(得分:0)

按位运算符使用寄存器级操作实现。因此,它们几乎是恒定的时间操作(O(1))。 然而,字符串上的子字符串操作是线性时间(O(n))。

我建议你坚持使用按位操作,这是你能获得的最快速度。