java反转整数中的所有位并返回整数
当我们反转整数1的所有位时,应该返回哪个整数?我们如何用Java代码做到这一点
不应使用java内置函数。不应使用字符串反转、转换为字符串等。只允许按位操作
import java.util.*;
import java.lang.*;
import java.io.*;
class BitReverseInt
{
public static void main (String[] args) throws java.lang.Exception{
System.out.println(reverser(1));
}
public static int reverser(int given){
int input = given;
int temp = 0;
int output = 0;
while(input > 0){
output = output << 1;
temp = input & 1;
input = input >> 1;
output = output | temp;
}
return output;
}
}
# 1 楼答案
位反转可以通过交换相邻的单个位,然后交换相邻的2位字段,然后交换4位字段,依此类推,如下所示。这五条赋值语句可以按任意顺序执行
通过查看每个中间结果,你可以看到正在发生什么
希望这能给你所需要的,在你的头脑中解决它。John Doe的答案将第4步和第5步合并为一个表达式。这在大多数机器上都适用
# 2 楼答案
在Java中,有多种方法可以反转给定数字的位
首先,Java语言有内置的位补码运算符(~)。所以(~number)反转数字的位
其次,可以使用整数。反向(数字)
第三,如果这是测试的一部分,或者你只是想玩比特,你可以参考下面的代码
输出: