首頁 >web前端 >js教程 >JavaScript 32位元整數無符號操作範例_javascript技巧

JavaScript 32位元整數無符號操作範例_javascript技巧

WBOY
WBOY原創
2016-05-16 17:10:291408瀏覽

在 JavaScript 中,所有整數變數預設都是有符號整數,這代表什麼呢?

有符號整數使用 31 位元表示整數的數值,用第 32 位元表示整數的符號,0 表示正數,1 表示負數。
數值範圍從 -2^31 - 2^31-1 即 -2147483648 到 2147483647。

JavaScript 進行位元操作時,是採用32位元 有符號 整數型,這表示其轉換的結果也是32位元有符號整數。 有些時候,我們進行移位會出現意想不到的結果,以下是C語言 與 JS 的比較。

C語言

複製程式碼 程式碼如下:


程式碼如下:


3774191835u;
unsigned int b = a >> 2;
/* b == 943547958 */ JavaScript
JavaScript



JavaScript

複製程式碼


程式碼如下:

var a = 3774191835; var b = a >> 2; /* b == -130193866 * / 可以看到,JavaScript 進行位元運算時,是採用的有符號整型,故我們得到了不一樣的結果。 怎麼解決呢? 我們可以把JavaScript 中的有符號數,轉換成無符號數。只需要進行 >>>0 移位操作就好了。 最好不要使用 >> ,建議使用 >>> 因為最左邊一位會被解析成符號位,當數字溢位時,會被解析成負數。
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn