程序员数学 001 二进制

1.什么是二进制?

十进制计数使用10作为基数,二进制使用2作为基数,二进制的位数是2^n的形式。

2.计算机为什么使用二进制?

二进制的数据表达具有抗干扰能力强、可靠性高的优点;
二进制非常适合逻辑运算;

3.二进制的位操作

移位操作:
二进制左移一位,就是将数字翻倍;

//10左移一位 = 20
console.log("10 << 1 = " + (10 << 1));

二进制右移一位,就是将数字除以2并求整数商;

//11右移一位 = 5 
console.log("11 >> 1 = " + (11 >> 1));

逻辑操作:
“或”:参与操作的位中只要有一个是1.最终结果就是1;
操作符: |

程序员数学 001 二进制_第1张图片
或 |

console.log("53 | 35 = " + (53 | 35))

“与”:参与操作的位中必须全部是1,最终结果才是1,否则就为0;
操作符: &


程序员数学 001 二进制_第2张图片
与 &
console.log("53 & 35 = " + (53 & 35))

“异或”:参与操作的位相同,最终结果就为0,否则为1;
操作符:^


程序员数学 001 二进制_第3张图片
异或 ^
console.log("53 ^ 35 = " + (53 ^ 35))

【最后】来一个本篇所有的代码合集

console.log("10 << 1 = " + (10 << 1));
console.log("11 >> 1 = " + (11 >> 1));

console.log("53 | 35 = " + (53 | 35))
console.log("53 & 35 = " + (53 & 35))
console.log("53 ^ 35 = " + (53 ^ 35))

【补充】位运算的骚操作

//1.用位运算实现的 10进制转2进制
var binaryToDecimal = function(number){
    var str = ""
    var sym = number<0?"-":""
    number = Math.abs(number)
    while(number != 0){
        str += (number & 1)
        number = number >> 1
    }
    return sym + str.split("").reverse().join("")
}
console.log("53的10进制转2进制 = "+ binaryToDecimal(53))

//2.用位运算判断奇偶数
var n = 53
if(n & 1){
  console.log(n+"为奇数")
}else{
  console.log(n+"为偶数")
}

你可能感兴趣的:(程序员数学 001 二进制)