(第 1 位 + 第 2 位)以十进制数表示

  • 本文关键字:十进制数 表示 c++
  • 更新时间 :
  • 英文 :


我想有十进制数(第 1 位 + 第 2 位(。

unsigned char a = 52;
unsigned char b = ((((a >> 2) & 0x1)*2)+(((a >> 1) & 0x1)*1));
// expected output: 2

我的代码有效,但我认为这种方式非常糟糕。

我认为混乱在于您的措辞...你说你想要 1st bit + 2nd bit,我认为(语义上(将是位索引 0 和 1。但是从你的代码中可以清楚地看出你真的想要位索引 1 和 2,因此为什么 52 (110100( 会产生 2。

在这种情况下,通过将位向右移动一个位并抓取低 2 位,可以轻松简化您提供的代码:

unsigned char a = 52;
unsigned char b = (a >> 1) & 3;

相关内容

  • 没有找到相关文章

最新更新