欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

js实现将一位整数型数字转化为二进制数(十进制与二进制互转)

程序员文章站 2022-07-15 10:26:21
...

我们知道正整数转化为二进制的方法是什么,就是将该数不断除以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

js实现将一位整数型数字转化为二进制数(十进制与二进制互转)

3.二进制转十进制,可利用parseInt(string,radix)

代码:

console.log(parseInt('1101',2))//13

 注意:radix表示的是要解析的数字的基数!所以代码中要想将二进制转化为十进制,那么radix必须写2.