javascript
JavaScript 32位整型无符号操作
在 JavaScript 中,所有整數(shù)字變量默認(rèn)都是有符號(hào)整數(shù),這意味著什么呢?
有符號(hào)整數(shù)使用 31 位表示整數(shù)的數(shù)值,用第 32 位表示整數(shù)的符號(hào),0 表示正數(shù),1 表示負(fù)數(shù)。
數(shù)值范圍從 -2^31 - 2^31-1 即 -2147483648 到 2147483647。
JavaScript 進(jìn)行位操作時(shí),是采用32位 有符號(hào) 整型,這意味著其轉(zhuǎn)換的結(jié)果也是32位有符號(hào)整型。 有些時(shí)候,我們進(jìn)行移位會(huì)出現(xiàn)意想不到的結(jié)果,以下是C語言 與 JS 的對(duì)比。
C語言
1 unsigned int a = 3774191835u; 2 unsigned int b = a >> 2; 3 /* b == 943547958 */JavaScript
1 var a = 3774191835; 2 var b = a >> 2; 3 /* b == -130193866 */可以看到,JavaScript 進(jìn)行位運(yùn)算時(shí),是采用的有符號(hào)整型,故我們得到了不一樣的結(jié)果。 怎么解決呢?
我們可以把JavaScript 中的有符號(hào)數(shù),轉(zhuǎn)換成無符號(hào)數(shù)。只需要進(jìn)行 >>>0 移位操作就好了。
最好不要使用 >> ,推薦使用 >>> 因?yàn)樽钭筮呉晃粫?huì)被解析成符號(hào)位,當(dāng)數(shù)字溢出時(shí),會(huì)被解析成負(fù)數(shù)。
轉(zhuǎn)載于:https://www.cnblogs.com/owenyang/p/3462245.html
總結(jié)
以上是生活随笔為你收集整理的JavaScript 32位整型无符号操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: InvokeHelper,让跨线程访问/
- 下一篇: 史上最简单的 SpringCloud 教