按位与"&"
1.运算规则: 两真才为真,一假即为假
例: 0&0=0; 0&1=0; 1&0=0; 1&1 = 1;
运算例子: 3 - 00000011,5 - 000000101
所以3&5=00000001; 等于1;
按位与的应用:
1.清零操作;
如果想把一单元清零(使他的二进制全为0),那么让它的每一位&0,结果就为0.
按位或"|"
运算规则:一真即为真.
0|0 = 0; 0|1 =1; 1|0 = 1; 1|1 = 1;
运算例子:3|5
结果为00000111;
所以等于7;
异或运算"^"
运算规则:相同为0,相异为1;
0^0 = 0; 1^0 =1; 0^1 =1; 1^1 = 0;
3^5结果为:00000110
所以为6;
异或的特殊作用:
1.与0异或保留原值
2.用异或运算交换两个变量的值;
例:a = 1, b =2;
a = a^b;
b = a^b;
a = a^b;
负数按补码形式参加按位或运算!!!
左移和右移
逻辑移位:移出去的位丢弃,空缺位(vacant bit)用 0 填充。
算术移位:移出去的位丢弃,空缺位(vacant bit)用“符号位”来填充,所以一般用在右移运算中。(一想到算数就是加减,所以这个是有符号的).
1、如果是无符号数,不管是左移还是右移都是“逻辑移位”
2、如果是有符号数,
如果是做左移运算,那么做的是“逻辑移位”,同 1中无符号数的左移。
如果是做右移运算,那么做的是“算术移位”。
左移部0,右移补符号位.