黑马程序员技术交流社区
标题:
细说与、或、异或
[打印本页]
作者:
刀叨
时间:
2015-6-26 19:31
标题:
细说与、或、异或
1、与运算&
这是一个位运算符,主要用于二进制数据类型的位操作,特点是:同真为真,有假必假
例如:10&3
10= 0000 0101
& 3= 0000 0011
------------------------
结果: 0000 0001=1
复制代码
与也有一个特性,就是在位运算中对相应的位进行清零操作,例如:int a=58 ( 0011 1010),如果我们想让低四位为0,高四位不变的话,我们可以把a和0xf0(1111 0000)进行与运算,int b = a&0xf0,结果为0011 0000。
2、按位或运算符“|”
这是一个位运算符,主要用于二进制数据类型的位操作,特点是:同假必假,有真为真
例如:10 | 3
10 = 0000 1010
3 = 0000 0011
----------------------
0000 1011 = 0x0b =11.
复制代码
按位或也有一个特性,就是相应的位设置为1,其他位进行保持操作,例如:int a=58 ( 0011 1010),如果我们想让高四位不变,低四位全部变成1的话,我们可以让a与0x0f(0000 1111)进行按位或操作,这样的话int b = a|0x0f = 0011 1111 =63。
3、按位异或^
位运算符,特点:相同得0,相反得1
例如:10 ^ 3
10 = 0000 1010
^ 3 = 0000 0011
----------------------
0000 1001 =9
复制代码
这个的主要特性就是和1异或取反,和0异或保持不变,所以可以快速对一个数据的一些位进行取反,而其他位不变,例如 int a = 58(0011 1010);如果我们不想对高四位进行操作,而想让低四位进行取反,我们可以让a^0x0f(0000 1111),这样int b = a ^ 0x0f; =0011 0101 = 53。
这就是位运算符的一些特性,不过这种用法主要用于针对硬件的开发,这样可以详细操作某个特定的管脚,在平时的软件开发中,这些运算符比较少用,但是为了便于大家理解,在这里简单的总结一些,给大家做个参考。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2