簡體   English   中英

左移

[英]Bit shifting left

假設我想將i左移兩次,然后將值存儲在f

f = i << 2;

那是對的嗎? 如何在C / C ++中做到這一點?

是。

f = i << 2

移位在許多位旋轉操作中很有用。

這曾經是將數字乘以4的好方法。 但是,如今,優化編譯器往往會為您解決這一問題。

請記住,最左邊的兩個位被丟棄。

需要特別注意的是:即使您的問題被標記為C++ ,也可能值得注意的是C和C ++在轉移負值方面采取了略有不同的路徑。 在C ++中,對負值執行<<>>的結果是實現定義的。 在C中>>是實現定義的,而<<產生未定義的行為

是的, i << 2f = i << 2f <<= 2都是人們想要做的所有移位位的事情。

需要記住的更多變化:

  • 您也有>> 在位級別, >>對於有符號和無符號類型的工作方式有所不同。

  • <<>>的優先級低於+-的優先級,這使某些人感到愚蠢,因為人們可能會想象他們更像*/

為了完整起見,可以幫助您進行位操作,您可以查看以下頁面: uow TEXTBOOK-> bitops.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM