我想做的是将数字交换,例如27到72。我尝试了下面的代码,但是没有运气。
static int reverse(int a){
int r = 0x0FF & a;
r <<= 4; a >>= 4;
r |= 0x0FF & a;
return r;
}
答案 0 :(得分:0)
int在Java(二进制)的32位上,您的示例使用2个十进制数字。
您不能在十进制数字上使用二进制运算符:每次向左移动时,您都将乘以2(而不是10)
尝试取模运算符(%)和除以10
答案 1 :(得分:0)
这将起作用:
public class Swap{
public static int getSwap(int num) {
int rst = 0;
int sign;
sign = num > 0 ? 1 : -1;
num *= sign;
while (num > 0) {
int lastNum = num % 10;
rst = rst * 10 + lastNum;
num = num / 10;
}
return rst * sign;
}
public static void main(String[] args) {
int n = 123456;
System.out.println("Output: " + getSwap(n));
}
}
答案 2 :(得分:0)
不能按位执行此操作。十进制和二进制不以这种方式转换。
这可以通过使用2(二进制)和16(十六进制)(或任何其他2个半径,其中一个是另一方的幂)之类的半径来完成,因为每4位二进制数对应于1位十六进制。二进制和十进制之间没有这种关系。