Java 版本题解
对于n = 13, 用int表示的话,其二进制是0000 0000 0000 0000 0000 0000 0000 1101
, 4字节,32位
n >> 0
的结果还是n,即0000 0000 0000 0000 0000 0000 0000 1101
n >> 1
的结果是0000 0000 0000 0000 0000 0000 0000 0110
, 和十进制的1(即0000 0000 0000 0000 0000 0000 0000 0001
)做&
运算的结果是0000 0000 0000 0000 0000 0000 0000 0001
,即结果是10进制的1
…
n >> 3
的结果是0000 0000 0000 0000 0000 0000 0000 0001
, 和1&
之后,结果是1
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int n = sc.nextInt();
System.out.println(dfs(n));
}
}
static String dfs(int n) {
StringBuilder sb = new StringBuilder();
for (int i = 14; i >= 0; i--) {
if ((n >> i & 1) == 1) {
if (sb.length() != 0) sb.append("+");
if (i == 0) sb.append("2(0)");
else if (i == 1) sb.append("2");
else sb.append("2(" + dfs(i) + ")");
}
}
return sb.toString();
}
}