c++ - 在数字的右边使用左移运算符

标签 c++ bitwise-operators

我对位运算符不是很熟悉,并且有这种用例:当我们在<<中使用左移位运算符C++时,数字将被移位,数字0将被放置在数字的右侧,我想放置1而不是零在右边。
我的意思是,如果我有一个数字00000000,并且使<< << 3,则结果必须是00000111而不是0!

最佳答案

一种简单的方法是将1左移要设置的位数,然后减去1

(1 << n) - 1
例如。
cout << (1 << 2) - 1 << '\n'; // prints 3
cout << (1 << 3) - 1 << '\n'; // prints 7
cout << (1 << 4) - 1 << '\n'; // prints 15
cout << (1 << 5) - 1 << '\n'; // prints 31
但请注意,这仅在n小于整数的位数时才有效。否则,它是不确定的行为。

关于c++ - 在数字的右边使用左移运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64168193/

相关文章:

c++ - findContours、contourArea 给出嵌套轮廓的错误。 "Assertion failed", "input array is not a valid matrix"

JAVA按位代码的目的,&

C++ bmp 按位运算符

dart - Dart/Flutter按位移位运算符返回不同的值

bit-manipulation - 通过 SIMD 查找数组中元素的索引。一个快速的方法

c++ - GetProcAddress 用于将修饰的 C++ 函数导入到 C++ 中

c++ - 模板生成器错误的显式复制构造函数

c++ - 为什么用 `0x62A`字体打印字符 "Calibri",而字符 `0x660E`不是?

c++ - 需要 IPP GMM 函数的数学公式。像 ippsLogGaussMixture_32f_D2() 等

c - 位移 x * 数字