例如,我有二进制数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);
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我输入x 11然后它打印出来26.这是什么错误?
Tho*_*mas 26
你转移的b时间太多了.首先进行轮班(这是第一次,何时b == 0,它没有效果):
while (x!=0){
b<<=1;
b|=( x &1);
x>>=1;
}
Run Code Online (Sandbox Code Playgroud)
Tan*_*ir1 14
稍微偏离主题.还有Java的内置位反转功能选项.
见http://java.sun.com/javase/6/docs/api/java/lang/Integer.html#reverse(int)
编辑:这假设您使用的是Java 1.5或更高版本.
| 归档时间: |
|
| 查看次数: |
33358 次 |
| 最近记录: |