在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

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

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

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

回答
編輯回答
安于心

JS 在進(jìn)行位運算前使用進(jìn)行toInt32或是toUint32 進(jìn)行類型轉(zhuǎn)換,也就是說所有的為操作都是只取對應(yīng)的 32 bits 來進(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