簡單,真的。由於在JavaScript中,0xf12345678>>>4
總是應該產生0x1234567
?我可以認爲這將適用於所有瀏覽器?在JavaScript中移動它之前,邏輯右移是否總是將源代碼片段修改爲32位?
0
A
回答
1
是的,根據ECMAScript 5規範,>>>
運營商執行內部ToUInt32
算法。
- 令LREF是評估ShiftExpression的結果。
- 讓lval成爲GetValue(lref)。
- 讓rref是評估AdditiveExpression的結果。
- 設rval爲GetValue(rref)。
- 讓lnum成爲ToUint32(lval)。
- 讓rnum爲ToUint32(rval)。
- 設shiftCount是屏蔽除rnum的最低有效位5之外的所有結果,即計算rnum & 0x1F。
- 返回通過shiftCount位執行lnum的零填充右移的結果。空位填充零。結果是 一個無符號的32位整數。
明確指出結果總是32位整數。
>>>
運算符通常用於轉換爲32位無符號整數。例如,MDN在他們的墊片中使用它。例如:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/forEach#Compatibility
0
應該是一個可靠的假設。任何JS解釋器在計算任何操作之前都會將0xf12345678
讀作單個操作數。如果你想要安全,爲什麼不要(0xf12345678)>>>4
?
在這裏的問題的一些細節:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Bitwise_Operators
位運算符把操作數爲32位(零 和1),而不是十進制,十六進制或八進制數字的序列。例如,對於 示例,十進制數字9的二進制表示形式爲1001. 按位運算符對這些二進制 表示形式執行其操作,但它們會返回標準的JavaScript數值。
相關問題
- 1. 爲什麼邏輯右移和算術右移有一個移位範圍1-32
- 2. 將動畫片段繪製爲位圖數據左右移動
- 3. 什麼是在iPhone上自動向左和向右移動撥片的邏輯?
- 4. 從ADD和NAND向右移位邏輯?
- 5. WinMerge - 是否有辦法排列移位/移動的代碼塊?
- 6. 邏輯右移操作
- 7. 在C中實現邏輯右移C
- 8. 請解釋邏輯右移,算術右移和右旋之間的區別
- 9. 代碼從32位移植到64位
- 10. 此JavaScript代碼是否遵循中點位移算法?
- 11. 將Autofac.integration.mvc中的代碼邏輯移動到Autofac.integration.webapi
- 12. 代碼片段中的邏輯錯誤?
- 13. 移植C編寫的32位源代碼到64位
- 14. MapView在不移動總是動畫的用戶當前位置
- 15. 這段代碼的邏輯是什麼?
- 16. 「片段操作在活動中修改它」是什麼意思?
- 17. 此代碼是否有邏輯錯誤? !
- 18. 邏輯,算術按位移
- 19. 邏輯移位和旋轉
- 20. 是否可以修改遷移
- 21. Javascript代碼邏輯
- 22. GPS位置總是在中國偏移
- 23. 右邊欄不是它必須的位置,移動到底部
- 24. 從SelectedItems源中移除項目是否將它們從ItemsSource中移除?
- 25. 爲什麼FirstThread總是在SecondThread之前的代碼中運行?
- 26. 代碼是否存在,用於在C#中將List元素左移或右移指定的數量?
- 27. 在處理中移動蛇邏輯
- 28. 將邏輯移動到模型
- 29. 將要移動到以前的文本字段的代碼是什麼?
- 30. 將FullCalendar修改爲移動版本