首先需要了解原码、反码、补码&位移;具体可以查看:位移&二进制转换&原码&反码&补码
截取文章中的几句话:
- 原码是被人脑直接识别并用于计算表示方式。
- 机器使用的是补码。
所以实际上,在机器中【-5】的表示是【11111111111111111111111111111011】(因为int数是4字节、32位)
但是我们在JS中
用传统的方法就是,【-5】先变成正的,然后填满32位,再取反,再加1.
比较麻烦,可以用位移实现操作,代码如下:
function to2String(n){
let output=[], temp;
for(let i=0;i<32;i++){
temp=n&(1<<31-i);
temp=temp>>>31-i;
output.push((temp==0)?'0':'1');
}
return output.join('');
}
还有二进制转十六进制的位移操作,具体请看:使用移位操作把十进制转换为二进制与十六进制字符串输出