int bit =(weight [i]&s)是什么意思

mtx8822

这是我的第一个问题,所以我想了解。下面是将十进制数转换为二进制的函数。我不明白这里发生了什么int bit = (weight[i] & s)

void showbits(unsigned char s)
{
    unsigned char weight[8] = { 1,2,4,8,16,32,64,128 };
    for (int = 7; i >= 0; i--)
    {
        int bit = (weight[i] & s);
        if (bit != 0)
            cout << '1';
        else cout << '0';
    }
}
安德烈亚斯·温泽尔(Andreas Wenzel)

在C中,&运算符可以具有两个含义:

  1. 运算符的地址(用作一元运算符时)
  2. 按位AND运算符(用作二进制运算符时)

另外,在C ++中(但在C中不是),在声明变量时使用它可能意味着声明的变量是引用。

在您描述问题的情况下,&运算符是按位AND运算符。

为了了解发生了什么,我将以weight二进制表示形式写入数组的所有值

00000001 (1)
00000010 (2)
00000100 (4)
00001000 (8)
00010000 (16)
00100000 (32)
01000000 (64)
10000000 (128)

通过对函数参数s和上面列出的值执行按位与运算,s在每次循环迭代中从变量提取特定的位在循环的第一次迭代中,将提取并打印最低有效(即最低)位,在循环的第二次迭代中,将提取下一个比特,依此类推。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章