0
A
回答
2
從我所看到的,你通過循環一次,與i == 20
。
打破它 - 10.0 * 2 == 20.0
和10.5 * 2 == 21.0
。
您的for循環基本上是for(var i = 20; i < 21; i++)
。
然後你or
歸零的mask
值與i << 20
的結果,這是1048576
並退出循環。
按預期工作。
右移位操作<<
有兩個參數 - 值多少轉移和。
要理解它,您需要考慮二進制以及如何用二進制表示事物。
例如,使用4位,你會看到1
表示爲:
0001
如果它左移兩個地方:
1 << 2
你得到:
0100
以十進制表示的是4
。這同樣適用於<< 20
,它將所有位20位移到左邊(丟棄溢出位)。
100000000000000000000 (binary) == 1048576 (decimal)
相關問題
- 1. 數據類型的問題
- 2. Typescript數據類型問題
- 3. 元數據類型問題
- 4. 數據集類型問題
- 5. JAVASCRIPT數據類型問題
- 6. Java數據類型問題
- 7. 數據類型問題
- 8. 雙數據類型問題
- 9. 數據類型的問題
- 10. 數據類型的問題
- 11. 數據類型的問題
- 12. oracle數據類型問題
- 13. 不能將類型'long'隱式轉換爲'ulong'。 (+ random ulong)
- 14. C#內存類型比ulong大
- 15. c#Enumerable.Sum方法不支持ulong類型
- 16. 檢查枚舉類型是ulong
- 17. Sql Server數據類型值問題
- 18. 問題對Cassandra的數據類型
- 19. 核心數據關係類型問題
- 20. Oracle號碼數據類型問題
- 21. 簡單閃存數據類型問題
- 22. 數據類型不匹配的問題
- 23. iPhone OpenGL:數據類型問題
- 24. C中的數據類型的問題
- 25. 熊貓數據類型轉換問題
- 26. WCF DataService「時間」數據類型問題
- 27. 抽象數據類型問題
- 28. 關於「bit」數據類型的問題
- 29. flex中的數據類型問題
- 30. Oracle GRCC Tcg數據類型問題
是的你是對的,但我想知道它是怎麼發生的? – Sampath
@Sampath - 你從來沒有讀過你的頭腦中的代碼?我不明白你認爲它不應該在哪裏? – Oded
其實我需要一個解釋,當我20歲時,它是如何變成1048576的? – Sampath