1.移位操作<< >>
·属于移位运算符,在二进制的基础上对数字进行平移。
·算术运算符 优先于 位移位运算符 优先于 关系运算符
·位移位运算符是同级别的,结合性是自左向右
规则:左移,丢弃最高位,0补最低位。右移,不带符号数,则补入的全为0。带符号位,补入的数等于原数的最左端
上的原数(符号位)。即右移符号位保持不变,正数补0,负数补1。如果移的位数>类型的最大位数,用左移的最大位数
模类型的最大位数,按余数进行移位。
例如:设无符号短整型变量a为0111(对应二进制数为0000000001001001),
则:a<<3结果为01110(对应二进制数为0000001001001000),a不变
a>>4结果为04 (对应二进制数为0000000000000100),a不变
又如,设短整型变量a为-4(对应二进制数为1111111111111100),
则:a<<3结果为-32(对应二进制数为1111111111100000),a不变
a>>4结果为-1(对应二进制数为1111111111111111),a不变
2.位操作& | ~逻辑操作&&||!
1.按位与运算&
按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结
果位才为1,否则为0。参与运算的数以补码方式出现。
例如:9&5可写算式如下:00001001(9的二进制补码)&00000101(5的二进制补码) 00000001(1的二进制补码)可见9&5=1。
按位与运算通常用来对某些位清0或保留某些位。
eg.把a的高八位清0,保留低八位, 可作 a&255运算(255的二进制数为0000000011111111)。
2.按位或运算|
按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1,结果位就为1。参与运算的两个数均以补码
出现。
例如:9|5可写算式如下:00001001 | 00000101 = 00001101(十进制为13)可见9|5=13
3.按位异或运算^
按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现。
例如:9^5可写成算式如下:00001001 ^ 00000101 = 00001100(十进制为12)
4.求反运算符~
求反运算符~为单目运算符,具有右结合性。其功能是对参与运算的数的各二进位按位求反。
例如:~9的运算为:~(0000000000001001) = 1111111111110110
5.逻辑运算符 && || !
1,逻辑运算符:
&& 逻辑与,可以理解为并且的意思.
|| 逻辑或,可以理解为或者的意思,也就是条件可以2取一
! 逻辑非 (一元表达式)
2,逻辑与运算:&&
逻辑与连接的2个表达式,要能够求解成bool类型,一般情况下都是关系表达式.
整个逻辑与运算结果也是bool类型
3,逻辑或运算:||
逻辑或连接的2个表达式,要能够求解成bool类型,一般情况下都是关系表达式.
整个逻辑或运算结果也是bool类型
bool isRight=表达式1||表达式2:当表达式1、2中有一个为true ,其表达式的结果为true.总之,有1为1
4,逻辑非运算(取反):!(这是一个一元运算符)
用法:
!(布尔类型的表达式)
作用:
如果布尔类型的表达式为True,加!后其整个式子的结果为False.
如果布尔类型的表达式为False,加!后其整个式子的结果为True.
bool isRight=!表达式:如果表达式的结果为true,则取反后为false,反之为true.