0

有人可以解释如何阅读这两个位掩码吗?

uint32_t = 0x1 << 0;
uint32_t = 0x1 << 1;

基本上,您如何将其翻译给无法阅读代码的人?哪个比另一个小?

4

1 回答 1

2

嗯,0x1 只是 1 的十六进制值,在二进制中表示为 ~001。当您对 0x1 应用 0 位移时,该值不会改变,因为您实际上并没有移动任何东西。当您移动 1 时,您正在查看 ~010 的表示,它在良好的数字中是 2,因为您在二分之一列中有一个 1,而其他任何地方都是零。

因此,uint32_t i = 0x1 << 0;的值小于uint32_t j = 0x1 << 1;

uint32_t i = 0x1 << 0;
uint32_t j = 0x1 << 1;

NSLog(@"%u",i);   // outputs 1
NSLog(@"%u",j);   // outputs 2
于 2013-09-01T05:00:26.407 回答