位运算符
2014-08-07 23:29
190 查看
1.位运算符介绍
位运算符可处理任何类型的整型值,但是不能处理浮点值。
2.按位与运算
对两个值进行“与”运算时,会逐位比较两个值的二进制数表示。第一个值与第二个值对应位都为1时,在结果的对应位上就会得到1;其他的组合在结果中得到0.
按位“与”运算经常用于屏蔽运算。就是说,该运算符可轻易地将数据项的特定位设置为0.
3.按位或运算
对两个值进行“或”运算时,会逐位比较两个值的二进制数表示。只要第一个值或者第二个值的相应位是1,那么结果的对应位就是1.
按位或操作通常称为按位OR,用于将某个词的特定位设为1.
4.按位异或运算
按位异或运算符通常称为XOR运算符,遵守以下规则:对于两个运算数的相应位,如果任何一个位是1,但不是两者都为1,那么结果的对应位将是1,否则是0.
5.一次求反运算
一次求反运算符是一元运算。他的作用仅是对运算数的位的“翻转”,将运算数中每一个是1的位翻转为0,而将每个是0的位翻转为1.
如果不知道运算中数值的准确位大小,那么一次求反运算符非常有用,使用它可以让程序不会依赖于整数数据类型的大小。
例如:
w1 &= 0xFFFFFFFE;此语句只可以在用32位表示整数的机器上可正常工作。如果用
w1 &= ~1;替换上面的语句,那么w1在任何机器中都会和正常的值进行“与”运算。这是因为这条语句会对1求反,然后在左侧会加入足够多的1,以满足int的大小要求(在64位机器上,会在左侧的63个位加入1)。
按位与运算符的优先级要高于按位或运算符。
6.向左移位运算符
对值进行向左移位运算时,值中包含的位将向左移动。与该操作关联的是该值要移动的位数目。超出数据项的高位将丢失,而从低位移入的值总为0.
7.向右移位操作符
向右移位操作符是把值的位向右移动,从值的低位移出的位将丢失。把无符号的值向右移位总是左侧(就是高位)移入0.对于有符号值而言,左侧移入1还是0取决于被移动的数字的符号,还取决于该操作在计算机上实现的方式,如果符号位为0,不管哪种机器,都将移入0,然而,如果符号位是1,那么在一些计算机上将移入1,而其他计算机将移入0.前一种运算通常称为算术右移,后者称为逻辑右移。
注意:如果试图用大于或等于该数据项的位数将值向左或向右移位,那么objective c语言对此还没有规定。如果使用负数对值移位,结果将同样是未定义的。
位运算符可处理任何类型的整型值,但是不能处理浮点值。
2.按位与运算
对两个值进行“与”运算时,会逐位比较两个值的二进制数表示。第一个值与第二个值对应位都为1时,在结果的对应位上就会得到1;其他的组合在结果中得到0.
按位“与”运算经常用于屏蔽运算。就是说,该运算符可轻易地将数据项的特定位设置为0.
3.按位或运算
对两个值进行“或”运算时,会逐位比较两个值的二进制数表示。只要第一个值或者第二个值的相应位是1,那么结果的对应位就是1.
按位或操作通常称为按位OR,用于将某个词的特定位设为1.
4.按位异或运算
按位异或运算符通常称为XOR运算符,遵守以下规则:对于两个运算数的相应位,如果任何一个位是1,但不是两者都为1,那么结果的对应位将是1,否则是0.
5.一次求反运算
一次求反运算符是一元运算。他的作用仅是对运算数的位的“翻转”,将运算数中每一个是1的位翻转为0,而将每个是0的位翻转为1.
如果不知道运算中数值的准确位大小,那么一次求反运算符非常有用,使用它可以让程序不会依赖于整数数据类型的大小。
例如:
w1 &= 0xFFFFFFFE;此语句只可以在用32位表示整数的机器上可正常工作。如果用
w1 &= ~1;替换上面的语句,那么w1在任何机器中都会和正常的值进行“与”运算。这是因为这条语句会对1求反,然后在左侧会加入足够多的1,以满足int的大小要求(在64位机器上,会在左侧的63个位加入1)。
按位与运算符的优先级要高于按位或运算符。
6.向左移位运算符
对值进行向左移位运算时,值中包含的位将向左移动。与该操作关联的是该值要移动的位数目。超出数据项的高位将丢失,而从低位移入的值总为0.
7.向右移位操作符
向右移位操作符是把值的位向右移动,从值的低位移出的位将丢失。把无符号的值向右移位总是左侧(就是高位)移入0.对于有符号值而言,左侧移入1还是0取决于被移动的数字的符号,还取决于该操作在计算机上实现的方式,如果符号位为0,不管哪种机器,都将移入0,然而,如果符号位是1,那么在一些计算机上将移入1,而其他计算机将移入0.前一种运算通常称为算术右移,后者称为逻辑右移。
注意:如果试图用大于或等于该数据项的位数将值向左或向右移位,那么objective c语言对此还没有规定。如果使用负数对值移位,结果将同样是未定义的。
相关文章推荐
- Java的位运算符具体解释实例——与(&)、非(~)、或(|)、异或(^)
- java 二进制 位运算符
- java个人学习笔记:位运算符
- PHP中关于位运算符 与 或 异或 取反
- C语言之进制、位运算符、数组
- 位运算符、函数、全局变量与工程管理
- Java位运算符
- 【算法基础】java中的移位运算符和位运算符
- 类型转换,位运算符
- 原码补码反码以及位运算符
- 第7周 C语言程序设计(新2版) 练习2-6/7/8 位运算符(不太理解)
- java的位运算符
- 以写代学:python 数据类型之数字,位运算符
- 几个典型的按位运算符示例
- php中的位运算符 与运算 或 异或 非
- Java位运算符理解方式
- (24)位运算符、sizeof运算符
- 位运算符与移位运算符
- JavaSE 学习参考:位运算符
- 不使用按位运算符,实现或"|",与"&",左移位"<<",右移位">>"二进制运算