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

时间:2014-12-09 23:21:16

标签: c binary bit-manipulation

我想知道无论如何要获得十进制数的二进制数版本的前2个最重要的位而不将其转换为实际的二进制数。例如,我想得到" 00"从5开始是" 00101"在二进制。 c是否以简单的方式支持这种二进制转换? c是否支持移位和位掩码等?

由于

1 个答案:

答案 0 :(得分:1)

是的确如此!

因此,要从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。 / p>

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

some_number = some_number & 0xC00000