0xaaaaaaaa 表示偶数位为 1 的二进制是巧合吗
Is this just a coincidence that 0xaaaaaaaa represents binary with even positions set as 1
十六进制0xaaaaaaaa表示偶数位为1的二进制是巧合吗
类似地,像 0x55555555 这样优雅的东西表示奇数位设置为 1 的二进制?
5的二进制表示是0101。所以0X55555555有16个1,16个0,1,0交替出现。同样0X33333333有16个1,16个0和2个连续的1,2个连续的0交替出现。
除了它们对应的位模式很有用之外,这些数字本身没有什么特别之处。
我认为这里的关键认识是,想出一个紧凑的十六进制数来表示任何更长的位模式(如果它重复就更容易)是非常容易的,就在你的脑海中。
为什么?因为从十六进制到二进制或二进制到十六进制的转换很简单 - 模式的每四位可以用一个十六进制数字整齐地表示:
假设我想要这个 16 位掩码:1110111011101110
。这是 1110
重复了 4 次,所以它只是一些十六进制数字,4 次。因为 1110
是十进制的 14,那将是“E”,所以我们的掩码将是:0xEEEE
.
十六进制0xaaaaaaaa表示偶数位为1的二进制是巧合吗
类似地,像 0x55555555 这样优雅的东西表示奇数位设置为 1 的二进制?
5的二进制表示是0101。所以0X55555555有16个1,16个0,1,0交替出现。同样0X33333333有16个1,16个0和2个连续的1,2个连续的0交替出现。
除了它们对应的位模式很有用之外,这些数字本身没有什么特别之处。
我认为这里的关键认识是,想出一个紧凑的十六进制数来表示任何更长的位模式(如果它重复就更容易)是非常容易的,就在你的脑海中。
为什么?因为从十六进制到二进制或二进制到十六进制的转换很简单 - 模式的每四位可以用一个十六进制数字整齐地表示:
假设我想要这个 16 位掩码:1110111011101110
。这是 1110
重复了 4 次,所以它只是一些十六进制数字,4 次。因为 1110
是十进制的 14,那将是“E”,所以我们的掩码将是:0xEEEE
.