【问题标题】:What does 1 << i means and how can I use it for?1 << i 是什么意思,我该如何使用它?
【发布时间】:2020-05-06 14:05:10
【问题描述】:

我看到有人用过 1 ,有时是 1 。这是什么以及如何使用它?

【问题讨论】:

  • 你知道所用运算符的含义吗?

标签: c++11 bit bitmask


【解决方案1】:

当您考虑二进制表示的值时,它会将值向左移动n 次。 n 将在右侧添加零位。

如果n == 2,则1b 变为100b 等等。

如果你用十进制看,移位一次(n==1)相当于将值乘以 2。移位两次等于乘以 4 运算,依此类推。

一个优点是位移可以比“真正的”整数乘法更快。

在计算中,您也经常会看到所谓的位域,其中每个位都可以打开或关闭某些东西,或者具有某些特殊含义。

例如,在微控制器上,寄存器的每个位都可能代表连接到 LED 的数字输出。

在那里,符号可用于创建一个“掩码”,表示程序员想要操作的位号 (i)。

例如

x &amp;= ~(1&lt;&lt;4) 清除第 4 位,而x |= (1&lt;&lt;4) 将设置相同的位。

请注意,如果i 太高或操作的左侧为负值,则移位可能会导致某些系统出现未定义的行为。

【讨论】:

    猜你喜欢
    • 2013-08-19
    • 2020-05-24
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    相关资源
    最近更新 更多