我知道ii的增量和x左移,但是它如何从1变为3?那么从13(D)到69?等等...
#include <stdio.h>
int main()
{
int x = 1;
int ii;
for (ii = 0; ii < 8; ii++) {
x = (x << ii) | 1;
printf("0x%.8X\n", x);
}
return (0);
}
这是输出
0x00000001 0x00000003 0x0000000D 0x00000069 0x00000691 0x0000D221 0x00348841 0x1A442081
答案 0 :(得分:3)
只需将所有内容写成二进制文件即可理解,就像这样:
1 = 0000 0001
i:1 ... 0000 0010 | 0000 0001 = 0000 0011(十六进制:3)
i:2 ... 0000 1100 | 0000 0001 = 0000 1101(十六进制:d)
i:3 ... 0110 1000 | 0000 0001 = 0110 1001(十六进制:69)
i:4 ...等等