[英]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.