簡體   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