转自:http://www.yiibai.com/objective_c/objective_c_bitwise_operators.html

下表中列出了支持Objective-C语言的位运算符。假设变量A=60和变量B=13,则:

运算符 描述说明 示例
& Binary AND Operator copies a bit to the result if it exists in both operands. (A & B) will give 12, which is 0000 1100
| Binary OR Operator copies a bit if it exists in either operand. (A | B) will give 61, which is 0011 1101
^ Binary XOR Operator copies the bit if it is set in one operand but not both. (A ^ B) will give 49, which is 0011 0001
~ Binary Ones Complement Operator is unary and has the effect of 'flipping' bits. (~A ) will give -61, which is 1100 0011 in 2's complement form due to a signed binary number.
<< Binary Left Shift Operator. The left operand's value is moved left by the number of bits specified by the right operand. A << 2 will give 240, which is 1111 0000
>> Binary Right Shift Operator. The left operand's value is moved right by the number of bits specified by the right operand. A >> 2 will give 15, which is 0000 1111

例子

尝试下面的例子就明白了所有在Objective-C编程语言的位运算符:

#import <Foundation/Foundation.h>

main()
{ unsigned int a = 60; /* 60 = 0011 1100 */
unsigned int b = 13; /* 13 = 0000 1101 */
int c = 0; c = a & b; /* 12 = 0000 1100 */
NSLog(@"Line 1 - Value of c is %d\n", c ); c = a | b; /* 61 = 0011 1101 */
NSLog(@"Line 2 - Value of c is %d\n", c ); c = a ^ b; /* 49 = 0011 0001 */
NSLog(@"Line 3 - Value of c is %d\n", c ); c = ~a; /*-61 = 1100 0011 */
NSLog(@"Line 4 - Value of c is %d\n", c ); c = a << 2; /* 240 = 1111 0000 */
NSLog(@"Line 5 - Value of c is %d\n", c ); c = a >> 2; /* 15 = 0000 1111 */
NSLog(@"Line 6 - Value of c is %d\n", c );
}

当编译和执行上述程序,它会产生以下结果:

2013-09-07 22:11:51.652 demo[30836] Line 1 - Value of c is 12
2013-09-07 22:11:51.652 demo[30836] Line 2 - Value of c is 61
2013-09-07 22:11:51.652 demo[30836] Line 3 - Value of c is 49
2013-09-07 22:11:51.652 demo[30836] Line 4 - Value of c is -61
2013-09-07 22:11:51.652 demo[30836] Line 5 - Value of c is 240
2013-09-07 22:11:51.652 demo[30836] Line 6 - Value of c is 15
 

Objective-C 位运算符的更多相关文章

  1. java的布尔运算符和位运算符

    1.布尔运算符 &&  逻辑与: ||   逻辑或: !=  不等于: 三元操作符:?: :表达式为  condition?expression1:expression2(当条件为真时 ...

  2. c 语言的位运算符复习

    转载和修正,原文连接:http://www.cnblogs.com/911/archive/2008/05/20/1203477.html 位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进 ...

  3. Java的算数运算符、关系运算符、逻辑运算符、位运算符

    JAVA的运算符,分为四类: 算数运算符.关系运算符.逻辑运算符.位运算符 算数运算符(9):+  -  *  /  %  ++  -- 关系运算符(6):==  !=  >  >=  & ...

  4. c语言基础表达式, 关系运算符, 逻辑运算符, 位运算符, 数据的取值范围, 分支结构(if...else, switch...case)

    1.表达式: 表达式的判断是有无结果(值), 最简单的表达式是一个常量或变量, 如:12, a, 3 + 1, a + b, a + 5 都是表达式 2.BOOL(布尔)数据类型: c语言中除了基本数 ...

  5. PHP中的运算符---位运算符、递增递减运算符、三元运算符、字符串运算符、数组运算符、类型运算符、错误控制运算符

    1.位运算符 位运算符用来对整型数的指定位进行置位,如果被操作数是字符串,则对该字符串的ASCII码值进行操作. 运算类型 运算符 举例 结果 按位与 & $a & $b 将$a 与 ...

  6. ECMAScript 位运算符

    位运算符是在数字底层(即表示数字的 32 个数位)进行操作的. 重温整数 ECMAScript 整数有两种类型,即有符号整数(允许用正数和负数)和无符号整数(只允许用正数).在 ECMAScript ...

  7. javascript运算符——位运算符

    × 目录 [1]二进制 [2]非 [3]与[4]或[5]异或[6]左移[7]右移[8]>>>[9]应用 前面的话 位运算符是非常底层的运算,由于其很不直观,所以并不常用.但是,其速度 ...

  8. PHP中为位运算符(几乎很少用)

    PHP语言里的位运算符&.|.^ .~.〈〈 .〉〉 "&" 按位与运算 按位与运算符"&"是双目运算符.其功能是参与运算的两数各对应的 ...

  9. PHP运算符:算数运算符、逻辑运算符、三目运算符、位运算符、字符串运算符。

    赋值运算符 PHP 赋值运算符用于向变量写值. PHP 中基础的赋值运算符是 "=". 这意味着右侧复制表达式会为左侧运算数设置值. _______________________ ...

  10. Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)

    位运算符主要针对二进制,它包括了:“与”.“非”.“或”.“异或”.从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算.下面 ...

随机推荐

  1. django之异常错误

    现象:最近需要抓取一些网页的信息,但发现Python的乱码问题相对Java来说,不太一样.按照以往Java解决中文乱码问题的思路去解决Python乱码,貌似行不通,报错信息: SyntaxError: ...

  2. HttpServletRequest对象(一)

    javaweb学习总结(十)——HttpServletRequest对象(一) 一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HT ...

  3. nmap简单使用

    探测同网段ip的存活及开放端口很方便-nmap,行千里者半九十,在于恒心! Nmap 7.40 ( https://nmap.org ) Usage: nmap [Scan Type(s)] [Opt ...

  4. 转: Ogre实现无缝地图要改的地方 记下来 用的时候可以看

    //OgreTerrainQuadTreeNode.hSceneNode* getLocalSceneNode(){return mLocalNode;} //OgreTerrain.huint16 ...

  5. 你应该知道的HTTP基础知识

    本文主要内容: HTTP请求报文格式 HTTP响应报文格式 Header 请求体的3种形式 推荐调试工具 HTTP的组成图示 1. HTTP请求报文格式 HTTP 的请求报文分为三个部分 请求行.请求 ...

  6. lua api 官方文档 函数后面的方括号 说明 [-0, +0, –]

    本博客注有“转”字样的为转载文章,其余为本人原创文章,转载请务必注明出处或保存此段.c++/lua/windows逆向交流群:69148232 每一个lua api 函数结尾都给出了这样的说明例如: ...

  7. [Spring学习笔记 5 ] Spring AOP 详解1

    知识点回顾:一.IOC容器---DI依赖注入:setter注入(属性注入)/构造子注入/字段注入(注解 )/接口注入 out Spring IOC容器的使用: A.完全使用XML文件来配置容器所要管理 ...

  8. DPDK架构与特点(转)

    from:http://www.cnblogs.com/mylinuxer/p/4277676.html DPDK架构与特点 当年在某公司实习的时候,当时老大给了我一份DPDK的文档,说是将来很有用, ...

  9. Agile Development敏捷软件开发之何为敏捷开发

    敏捷软件开发之何为敏捷开发 敏捷开发,Agile Development,就是指能够在需求迅速变化的情况下快速开发软件.我们接触最多敏捷实践方式有:极限编程(XP).结对编程.测试驱动开发(TDD)等 ...

  10. 深入学习 Git 工作流

    原文  https://github.com/xirong/my-git/blob/master/git-workflow-tutorial.md   个人在学习git工作流的过程中,从原有的 SVN ...