本文共 698 字,大约阅读时间需要 2 分钟。
某人遇到了一个有趣的编程问题,需要将给定的32位无符号整数的二进制位进行颠倒。开始时看起来有些复杂,但经过仔细思考后发现其实不是特别难。下面是他对解决问题的思路和实现过程的总结:
问题理解:首先明确题目要求颠倒二进制数的各位。例如,示例1中的二进制数00000010100101000001111010011100颠倒后变为00111001011110000010100101000000,对应的数值为964176192。
操作思路:
(n & 1)
来判断当前二进制位是否为1。n
右移一位,这样原来的第二位将出现在末位。代码实现:
public class Solution { public int reverseBits(int n) { int res = 0; for (int i = 0; i < 32; i++) { res <<= 1; if ((n & 1) != 0) { res++; } n >>= 1; } return res; }}
注意事项:
通过上述步骤和代码,该问题得以解决,确保无论输入的二进制数如何,都能正确反转并返回结果。
转载地址:http://cmgyk.baihongyu.com/