//按位非(NOT)
function NOT() {
let num1 = 25;
let num2 = ~num1;//-26 类似于 -n-1
console.log(num2);
}
//按位与(AND)
//把左右两边的数字转化为二进制,然后每一位分别进行比较,如果相等就为相等的数(0||1),不相等即为0
function AND() {
let num1 = 25;
// num1=num1.toString(2); //11001
let num2 = 3;
// num2=num2.toString(2);//00011
console.log(num1 & num2);
}
//按位或(OR)
//把左右两边的数字转化为二进制,然后每一位分别进行比较,如果相等就为相等的数(0||1),不相等即为1
function OR() {
let num1 = 25;
let num2 = 3;//11011
console.log(num1 | num2);//27
}
//按位异或(XOR)
//把左右两边的数字转化为二进制,然后每一位分别进行比较,如果相等就为0,不相等即为1
function XOR() {
let num1 = 25;
let num2 = 3;//11010
console.log(num1 ^ num2);//26
}
//左移
//<<不会影响符号
function f1() {
let oldvalue = 2; //二进制为10
let newvalue = 2 << 5; //左移5位,1000000 为64
console.log(newvalue, -2 << 5);
}
//右移
//>>受符号影响,数值过小右移输出值会为0
function f2() {
let oldvalue = 64; //二进制为1000000
let newvalue = oldvalue >> 5; //右移5位,10 为2
console.log(newvalue, -2 >> 5);//2,-1 受右移影响
}