吐槽先~為什么我的老師大學時候沒教過我這東西 - -、
繼續送栗子:
比如 “(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。
呵呵鑒於此刻無意間發現的這個驚天大秘密,以后再求小於等於某個數的偶數,就可以這樣寫嘛~
當然大家也可以繼續開腦洞拓展一下,直到玩壞它。