我有一个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会更快吗?
答案 0 :(得分:0)
按位运算符使用寄存器级操作实现。因此,它们几乎是恒定的时间操作(O(1))。 然而,字符串上的子字符串操作是线性时间(O(n))。
我建议你坚持使用按位操作,这是你能获得的最快速度。