位运算符和赋值运算符

位运算符

位运算只能对整数进行,可以是整数型变量也可以是被识别为整数类型的字面量。位运算是对该整数实际存储的二进制串的二进制位进行操作,可以进行6种位运算:

运算符作用
&按位与
按位或
^按位异或
~按位取反
<<左移
>>右移

位运算都不改变操作数本身的值,而是位运算表达式本身的值为进行位运算之后的值,例如:

char a = 0B00101101;
char b = 0B10100110;
char c = a & b;	// c == 0B00100100
char d = a | b;	// d == 0B10101111
char e = a ^ b;	// e == 0B00100100
char f =  ~a;	// f == 0B11010010
char g =  a << 2;	// g == 0B10110100,低位补0
char h =  a >> 2;	// h == 0B00001011,高位补0
char gg = b << 2;	// gg == 0B10011000,低位补0
char hh = b >> 2;	// hh == 0B11101001,高位补1

左移运算,低位一定补0。右移运算,如果是signed类型则补符号位,unsigned类型则补0,例如:

unsigned char b = 0B10100110;
char hh = b >> 2;	// hh == 0B00101001,高位补0
// 虽然b和上面的代码中二进制串相同,但这里b被当作unsinged类型,补0而不是1

如果给出的移位位数为负数,不会反向移位,而是将此负数的二进制串(实际为补码)转化为unsigned正整数再移动相应位数,例如:

unsigned char b = 0B10100110;
char hh = b >> -2;	// -2的二进制串为0xFE,对应unsigned整数为254即右移254位,最终结果为0B00000000

赋值运算符

赋值运算符最简单的就是"=",将右边的值赋值给左边的变量,或者用于初始化语句中。C/C++除了有最基本的赋值运算符之外还有扩展的赋值运算符:

=a = b
+=a = (a+b)
-=a = (a-b)
*=a = (a*b)
/=a = (a/b)
%=a = (a%b)
&=a = (a&b)
|=a = (a|b)
^=a = (a^b)
<<=a = (a<<b)
>>=a = (a<<b)

赋值运算符的左侧必须是可修改的值,也就是变量。对一个常量使用赋值运算符则会报错:不可修改的左值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值