【C#】關於左移/右移運算符的使用


吐槽先~為什么我的老師大學時候沒教過我這東西  - -、

 

繼續送栗子:

比如 “(1+2)<<3”

你們猜等於幾~

        Debug.Log((1+2)<<3)之后輸出的是“24”。

為什么呢~

因為呀因為呀  “

  “左移/右移” 是指對應的二進制向左右移位,執行1+2=3,就變成了3<<3。即:把3對應的二進制向左移3位。

  3對應的二進制:11   向左移3位變成 11000

  二進制11000不就是十進制的24嘛~~~”

 

繼續拓展一下思維

     3>>1<<1 =?  一般人會想呀先向右移又向左移回來,結果肯定是3不會變呀~~~真·圖樣圖森破!

        自己算一下就會發現:

        一個數向右移動一位后,所對應的二進制最后一位無論是1還是0,都已經沒意義了,因為它消失了呀。然后,再向左移動一位,神奇的又增加的那一位又用0補上了。

        所以,3變成2進制的“11”向右移動一位變成“1”,再向左移動一位變成了“10”,也就是2。

        呵呵鑒於此刻無意間發現的這個驚天大秘密,以后再求小於等於某個數的偶數,就可以這樣寫嘛~

        當然大家也可以繼續開腦洞拓展一下,直到玩壞它。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM