JavaScript 32位整型無符號(hào)操作示例
更新時(shí)間:2013年12月08日 17:17:27 作者:
所有整數(shù)字變量默認(rèn)都是有符號(hào)整數(shù),JavaScript 進(jìn)行位操作時(shí),是采用32位有符號(hào)整型,這意味著其轉(zhuǎn)換的結(jié)果也是32位有符號(hào)整型
在 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語言
unsigned int a = 3774191835u;
unsigned int b = a >> 2;
/* b == 943547958 */
JavaScript
var a = 3774191835;
var b = a >> 2;
/* 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ù)。
有符號(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語言
復(fù)制代碼 代碼如下:
unsigned int a = 3774191835u;
unsigned int b = a >> 2;
/* b == 943547958 */
JavaScript
復(fù)制代碼 代碼如下:
var a = 3774191835;
var b = a >> 2;
/* 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ù)。
相關(guān)文章

jsonp格式前端發(fā)送和后臺(tái)接受寫法的代碼詳解
jsonp是ajax提交的一種格式不會(huì)受跨域限制,這篇文章主要介紹了jsonp格式前端發(fā)送和后臺(tái)接受寫法的代碼詳解,需要的朋友可以參考下
2019-11-11 
JavaScript如何利用Promise控制并發(fā)請(qǐng)求個(gè)數(shù)
大家都知道js是單線程,并不存在真正的并發(fā),但是由于JavaScript的Event Loop機(jī)制,使得異步函數(shù)調(diào)用有了“并發(fā)”這樣的假象。這篇文章主要給大家介紹了關(guān)于JavaScript如何利用Promise控制并發(fā)請(qǐng)求個(gè)數(shù)的相關(guān)資料,需要的朋友可以參考下
2021-05-05 
JS實(shí)現(xiàn)合并兩個(gè)數(shù)組并去除重復(fù)項(xiàng)只留一個(gè)的方法
這篇文章主要介紹了JS實(shí)現(xiàn)合并兩個(gè)數(shù)組并去除重復(fù)項(xiàng)只留一個(gè)的方法,涉及JavaScript數(shù)組合并及去重的相關(guān)技巧,需要的朋友可以參考下
2015-12-12 
JavaScript.The.Good.Parts閱讀筆記(一)假值與===運(yùn)算符
JavaScript 假值與===運(yùn)算符,學(xué)習(xí)js的朋友可以看下。
2010-11-11 
JavaScript實(shí)現(xiàn)非常簡(jiǎn)單實(shí)用的下拉菜單效果
這篇文章主要介紹了JavaScript實(shí)現(xiàn)非常簡(jiǎn)單實(shí)用的下拉菜單效果,通過定義顯示及隱藏菜單項(xiàng)及鼠標(biāo)事件調(diào)用該函數(shù)實(shí)現(xiàn)下拉菜單功能,需要的朋友可以參考下
2015-08-08 
JS實(shí)現(xiàn)標(biāo)簽頁效果(配合css)
實(shí)現(xiàn)的效果是當(dāng)鼠標(biāo)移到某一個(gè)標(biāo)簽的時(shí)候,在下面的內(nèi)容區(qū)顯示對(duì)應(yīng)的內(nèi)容,并且相應(yīng)標(biāo)簽的顏色需要改變,這樣的效果是CSS和JS配合實(shí)現(xiàn)的,下面我們就來看看具體代碼
2013-04-04