繁体   English   中英

这是什么意思?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM