[英]What is the meaning of this?
嗨,大家好,您能否解释以下代码中的大于符号的作用是什么?
if (header->mode > forceMode)
{
*rate >>= (header->mode - forceMode); //What does this mean >>=
*granule_frame_size <<= (header->mode - forceMode); //What does this mean <<=
}
尽管以上所有答案都是正确的,但您可能仍然不了解。 您将需要了解二进制。
想象你有表达
7 << 2
这意味着“将7转换为二进制,然后将所有位左移2次”。
所以7是00000111
向左移动两次(并插入零),结果:
00011100
这等于28。
因此,如果变量A为7,而B为2,则:
A <<= B;
离开A等于28;
>>=
是右移赋值运算符。 x >>= y
等效于x = x >> y
(@bdonlan指出以下警告)。
传统上认为<<
和>>
运算符是按位的,因为这是它们的实现方式,但是就C语言而言,它们是算术运算符(不是按位运算符),相当于用2的相应乘方除以乘积也就是说, x<<y
是x * 2 ^ y, x>>y
是x / 2 ^ y(具有整数截断),其中^表示“提高到幂”而不是“ xor”。 它们仅针对x
正值进行定义,并且像所有算术运算符一样,如果结果溢出, <<
对于带符号的操作数具有未定义的行为。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.