鍍金池/ 問(wèn)答/C  HTML/ js中較大的數(shù)值進(jìn)行右移位運(yùn)算,結(jié)果不正確

js中較大的數(shù)值進(jìn)行右移位運(yùn)算,結(jié)果不正確

一般來(lái)講,右移一位的位運(yùn)算,相當(dāng)于除2,例如100>>2===25,
但是對(duì)于較大的數(shù)右移位運(yùn)算,完全不正確
var id = 386547056836608
console.log(id>>8);
結(jié)果768
正確的結(jié)果1509949440768
測(cè)試右移8,16,24,32位右移,結(jié)果都不同,這個(gè)是js本身的位數(shù)限制,還是其它的問(wèn)題?

回答
編輯回答
安于心

JS 在進(jìn)行位運(yùn)算前使用進(jìn)行toInt32或是toUint32 進(jìn)行類型轉(zhuǎn)換,也就是說(shuō)所有的為操作都是只取對(duì)應(yīng)的 32 bits 來(lái)進(jìn)行的。

function toInt32(x) { return x>>0; }
function toUint32(x) { return x>>>0; }

toInt32(386547056836608); // 19668
19668 / 256 == 768;

http://www.ecma-international...

2017年3月30日 03:14