从 c 中的十进制数中获取 2 MSB 数字



我想知道无论如何都可以在不将其转换为实际二进制数的情况下获取十进制数的二进制数版本的前 2 个最高有效位。例如,我想从 5 中获取"00",即二进制中的"00101"。c 是否以简单的方式支持这种二进制转换?c是否支持移位和位屏蔽等?

谢谢

是的,确实如此!

因此,要从 8 位数字中获取前 2 位,我们需要屏蔽您当前的数字。我们可以这样做:

some_number = some_number & 0xC0;
some_number &= 0xC0; // This does the same thing with a different syntax

所以我们在这里做的是用值 0xC0 执行按位 AND ,将0xC0转换为二进制会给我们1100 0000。因此,当我们用 some_number 和这个值时,我们只得到前 2 位,因为数字中的所有其他值都是0的,因此每当我们和其他任何东西和它时都会产生一个0

对于大于 8 位的数字,我们要做的就是增加掩码的长度。这是另一个示例,假设我们想要 32 位整数的前 2 位

some_number = some_number & 0xC00000

最新更新