我有一个十进制值65
,我想将此值除以 2 以格式化。
例如,我有这个类型规则:
如果我得到42
十进制数,我想先除42 number in format of 2 raised to
。然后,我只想输出它的力量,比如:
OutPut : 1,3,5
例如,如果我有 65 作为十进制数,那么我想6,0
作为它的输出,因为 (2 提高到 6) + (2 提高到 0) = 65。
谢谢
任何人都可以帮助我如何在 Java 中实现这一目标。
您可以反复比较最低有效位,边走边算,然后右移数字以依次查看每个位:
int n = 65
int d = 0;
while (n > 0) {
if ((n & 1) == 1) { // check LSB
System.out.println(d);
}
n >>>= 1; // shift right
++d; // inc digit count
}
Integer.toString(65, 2);
执行以下输出:
1000001
然后你在字符串上工作。
这可以改进,但我认为它会完成这项工作。
int n = 42;
String binary = Integer.toBinaryString(n);
for(int i = binary.length() - 1; i >= 0; i--){
if(binary.charAt(i) == '1')
System.out.print(i+1);
}
这是算法: