繁体   English   中英

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

[英]How to swap digits from a integer in Java using bitwise operator?

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

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

int在Java(二进制)中为32位,您的示例使用2个十进制数字。

您不能在十进制数字上使用二进制运算符:每次向左移动时,您将乘以2(而不是10)

尝试取10的模运算符(%)和除法

这将起作用:

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(二进制)和16(十六进制)这样的半径(或任何其他2个半径,其中一个是另一方的幂)完成,因为每4位二进制数对应于1位十六进制。 二进制和十进制之间没有这种关系。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM