如何使用位运算符从Java中的整数交换数字?

时间:2018-09-21 08:48:25

标签: java

我想做的是将数字交换,例如27到72。我尝试了下面的代码,但是没有运气。

static int reverse(int a){
    int r = 0x0FF & a;
    r <<= 4; a >>= 4;
    r |= 0x0FF & a;
    return r;
}

3 个答案:

答案 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位十六进制。二进制和十进制之间没有这种关系。