前言
操作符有很多,但大多数在c语言前面的学习中会有涉猎,这里重点来讲讲位操作符和结构成员访问操作符。
位操作符
注意:1.使用位操作符的前提是它们的操作数必须是整数!!!
2.位操作符都是直接对这个数的二进制位进行操作的
按位与:&
这里直接上代码:
为什么是这个结果?
按位与:&的运算方法是:两个补码之间一一对应操作,有0变0,两个为1取1.
如图:
因为正数的原码,反码,补码都相同,所以c的原码也和他的补码一样,计算得2.
按位或:|
同理,先看运算方法:两个补码之间一一对应操作,有1变1,两个为0取0.
举例代码:
运算过程如图:
正数的原码,反码,补码都相同,所以c的原码也和他的补码一样,计算得3.
按位异或:^
先看运算方法:两个补码之间一一对应操作,相同取0,相异取1.
举例代码:
运算过程如图:
正数的原码,反码,补码都相同,所以c的原码也和他的补码一样,计算得1.
按位取反:~
先看运算方法:补码所有(包括符号位)全部取反,即0变1,1变0.
举例代码:
值得注意的是:按位取反的对象是一个整数,而不是两个.
ps:这里补充一个小技巧:负数的补码-->原码可以直接符号位不变,剩下的取反之后+1.
运算过程如图:
由c的原码计算得c为-3.