Reverse Bits
Reverse bits of a given 32 bits unsigned integer.
Example:
1 | Input: 43261596 |
Follow up:
If this function is called many times, how would you optimize it?
思路:怎么才能做到反转呢,首先,要保证的一点是原数字二进制表示中的0和1的数目和翻转后的数字中的二进制表示中的0和1的数目要相等,这个相等可以通过将原数和1按位与运算可以做到。这里的一个小技巧是,将每一次按位与运算后的结果左移一个单位后,进行下一次按位与,这样最后得到的结果就是和原数字的二进制表示对称的序列,注意最后一位不用左移,因为每次左移的目的是给下一个按位与计算的结果“腾位置”。
代码如下:
1 | public class Solution { |