簡體   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