无法理解某些c++; 代码>(b和1)正在检查,并且在 E/语句>代码> b> > 1 < /COD>为什么有两个“代码> > > 操作符,这就是您在C++中检查更大/相等的方法吗?谢谢

无法理解某些c++; 代码>(b和1)正在检查,并且在 E/语句>代码> b> > 1 < /COD>为什么有两个“代码> > > 操作符,这就是您在C++中检查更大/相等的方法吗?谢谢,c++,C++,这是执行位操作 b >>= 1; 上述声明意味着- b = b >> 1; 这些是按位运算符。“&”符号表示,在这种情况下,它将检查“b”的二进制表示与1的二进制表示。'>>='也是一个称为右移的按位运算符。此:>>=是对b执行右移操作并将其重新分配给b的右移赋值运算符。>>=1基本上把b除以2 它将所有位1向右移位 例如,如果二进制中的b是00000010(十进制中的2),则b>>=1将使b=00000001(十进制中的1)。另一个eg2:00001110(14)将

这是执行位操作

b >>= 1;
上述声明意味着-

b = b >> 1;

这些是按位运算符。“&”符号表示,在这种情况下,它将检查“b”的二进制表示与1的二进制表示。'>>='也是一个称为右移的按位运算符。

此:>>=是对b执行右移操作并将其重新分配给b的右移赋值运算符。>>=1基本上把b除以2

它将所有位1向右移位


例如,如果二进制中的b是00000010(十进制中的2),则b>>=1将使b=00000001(十进制中的1)。另一个eg2:00001110(14)将变为00000111(7)等,但这样做会失去精度:00000111(7)将变为00000011(3)。

如果(b&1)
检查
b
是否为奇数(设置了低阶位)
b>>=1
b
右移一位,并将结果分配回
b
;大致相当于
b=b/2也见“我不知道C++,但我能理解大部分程序”。关于C++语法有很多很好的参考文献。你应该打开一个。这不是一个真正的编程问题。具体来说,查找位操作。
&
(按位and)和
>
(右移和扩展
>=
)都属于这一类。如果您想知道为什么人们使用(b&1)和(b>>=1)而不是更明确的(0==(b%2))和(b/=2)。。。我也是。从历史上看,当编译器比程序员笨时,它可以运行得快一点。如今,我很想知道它是否能实现无缘无故的混淆。在这种特定的情况下,这显然是愚蠢的,因为明显而有效的优化(崩溃if…else)被完全忽略了。