二进制下连续1的表示
0x1 = 0b1
0x3 = 0b11
0x7 = 0b111
0xf = 0b1111
0x1f = 0b11111
0x3f = 0b111111
0x7f = 0b1111111
0xff = 0b11111111
交替1和0
0x5 = 0b0101
0xa = 0b1010
连续2个1连续两个0
0x3 = 0b0011
0xc = 0b1100
连续4个1连续4个0
0xf = 0b1111
0xf0 = 0b11110000
1-4位
0x1 = 0b0001
0x2 = 0b0010
0x4 = 0b0100
0x8 = 0b1000
1-8位
0x1 = 0b00000001
0x2 = 0b00000010
0x4 = 0b00000100
0x8 = 0b00001000
0x10 = 0b00010000
0x20 = 0b00100000
0x40 = 0b01000000
0x80 = 0b10000000
快速打印一个数字的前n位
for (int i = 0; i < n; i++) {
printf("%d", (num >> (n - i - 1)) & 1);
}
快速打印一个数字的后n位
for (int i = 0; i < n; i++) {
printf("%d", (num >> i) & 1);
}
快速打印一个数字的第n位
printf("%d", (num >> (n - 1)) & 1);
快速将一个数字的第n位置为1
num |= (1 << (n - 1));
快速将一个数字的第n位置为0
num &= ~(1 << (n - 1));
快速将一个数字的第n位设为0/1(x)
num &= ~(1 << (n - 1));
num |= (x << (n - 1));
快速将一个数字的第n位取反
num ^= (1 << (n - 1));