我们知道正整数转化为二进制的方法是什么,就是将该数不断除以2求余,一直到最后一个数为1,然后倒着将余数从左往右拼接;
但是负整数的二进制数就不一样了,要先求其绝对值的二进制数后,再求反,最后再加一;
1.当然,这里还有一个简便的方法,可以先求其绝对值之后,再减一,最后求反。
代码实现:
function convert(num) {
var str = '';
var temp = num;
if(num<0){
num = Math.abs(num) - 1;
}
var arr = new Array();
arr = importArr(num, arr);
if(temp < 0){
for(var j = 0; j < arr.length; j++){
if(arr[j] === 1){
arr[j] = 0;
}else{
arr[j] = 1;
}
}
}
for (i = arr.length; i > 0; i--) {
str += arr[i-1];
}
if(temp < 0){
str = '-' + str;
}
return str;
}
function importArr(num, arr){
for (var i = 0; 1; i++) {
if (num / 2 >= 1) {
arr[i] = num % 2;
num = parseInt(num / 2);
} else {
arr[i] = 1;
break;
}
}
return arr;
}
console.log(convert(13));//1101
console.log(convert(-13));//-0011
2.利用toString()方法(但是这个方法只能求正整数的二进制数)
代码:
var numGG = 13;
console.log(numGG.toString(2))//1101
3.二进制转十进制,可利用parseInt(string,radix)
代码:
console.log(parseInt('1101',2))//13
注意:radix表示的是要解析的数字的基数!所以代码中要想将二进制转化为十进制,那么radix必须写2.