位运算符分为位逻辑运算符和位移运算符
位逻辑运算符
&:与;
|:或;
~:取反;
^:异或;
在二进制运算中0相当于假1相当于逻辑的真。
1、逻辑“与”&
A&B:当A和B全为真(也就是全为1)则为真(为1)。反之为假(为0);
比如:
A=1;B=0;——>A&B=0;
在10进制当中的计算:
注意:把10进制的数,化成2进制数来进行计算。
A=12; 十进制
A=0000 0000 0000 1100; 二进制
B=8; 十进制
B=0000 0000 0000 1000;二进制
A&B:
A 0000 0000 0000 1100;
-----------------------两个二进制位上下进行比较
B 0000 0000 0000 1000;
A&B 0000 0000 0000 1000;化为十进制就是8
所以12&8=8
2、逻辑“或” |
A|B:A和B只有一方为真(只有一方为1)则为真(为1)。当双方全为假(为0)的时候则为假(为0);
比如:
A=1;B=0;——>A|B=1;
在10进制为中的计算
A=8;
B=4;
A 0000 0000 0000 1000
--------------------------
B 0000 0000 0000 0100
A|B 0000 0000 0000 1100 =12
所以:
8|4=12;
3、逻辑“取反” ~
~A:取反则表示 如果是真(1),取反为假(0);如果是假(0)取反为真(1);
比如:
A=1;——> ~A=0;
在10进制为中的使用
在10进制取反的时候需要把10进制转化为二进制的补码形式在进行取反
比如:
A=-5;
A 1000 0000 0000 0101 原码;第一位为符号位1位负0为正
1111 1111 1111 1010 反码:符号位不变,后面的取反
1111 1111 1111 1011 补码:负数反码+1。
这仅仅限于负数;正数原码、反码、补码相同;
取反
0000 0000 0000 0100 =4 返回的这个也是补码;
所以~-5=4 需要化成原码来进行10进制幻化
4、逻辑“异或” ^
A^B: 如果A和B不相等则为真(1)。反之,为假(0);
比如:
A=1;B=0;——> A^B=1;
在10进制为中的使用
A=31;
B=22;
A 0000 0000 0001 1111;二进制表达形式
--------------------------
B 0000 0000 0001 0110;二进制表达形式
在这需要注意前边的0即使相同也不化为1;
A^B 0000 0000 0000 1001; =9;
所以31^22=9;