您的位置:首页 > 其它

位运算符

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语言对此还没有规定。如果使用负数对值移位,结果将同样是未定义的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  位运算符