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