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