反转位数

新手上路,请多包涵

例如,我有二进制数 1011,它等于十进制的 11。我想要反转位的位置,使其变为 1101,即十进制的 13。代码如下:

 import java.util.*;
public class bits {
    public static void main(String[] args) {
        Scanner scnr=new Scanner(System.in);
        System.out.println("enter x:");
        int x=scnr.nextInt();
        int b=0;
        while (x!=0){
            b|=( x &1);
            x>>=1;
            b<<=1;
        }
        System.out.println(b);
    }
}

但是当我输入 x 11 然后它打印 26。错误是什么?

原文由 user466534 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 463
2 个回答

您正在移动 b 一次太多了。首先进行轮班(以便第一次,当 b == 0 时,它没有任何效果):

 while (x!=0){
  b<<=1;
  b|=( x &1);
  x>>=1;
}

原文由 Thomas 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏