[英]Bit shifting left
假設我想將i
左移兩次,然后將值存儲在f
。
f = i << 2;
那是對的嗎? 如何在C / C ++中做到這一點?
是。
f = i << 2
移位在許多位旋轉操作中很有用。
這曾經是將數字乘以4的好方法。 但是,如今,優化編譯器往往會為您解決這一問題。
請記住,最左邊的兩個位被丟棄。
需要特別注意的是:即使您的問題被標記為C++
,也可能值得注意的是C和C ++在轉移負值方面采取了略有不同的路徑。 在C ++中,對負值執行<<
或>>
的結果是實現定義的。 在C中>>
是實現定義的,而<<
產生未定義的行為 。
是的, i << 2
, f = i << 2
或f <<= 2
都是人們想要做的所有移位位的事情。
需要記住的更多變化:
您也有>>
。 在位級別, >>
對於有符號和無符號類型的工作方式有所不同。
<<
和>>
的優先級低於+
和-
的優先級,這使某些人感到愚蠢,因為人們可能會想象他們更像*
和/
。
為了完整起見,可以幫助您進行位操作,您可以查看以下頁面: uow TEXTBOOK-> bitops.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.