逻辑运算:
与运算&:与0清零  清零用与运算
或运算 |:或1置一  置一用或运算
异或 ^:不同为1
 /*****单个寄存器清零置一********************************************************
int a =0x00000000;
int b = 0xffffffff; //默认是32位寄存器
 
1.让第三位置一  
      a | 0x8 ==> a = a | (0x1<<3)
2.让第三位清零
1111 1111 ... 0111 
b = b & 0xfffffff7 ====>b = b &( ~(0x1<<3))
3.让b的第三位和第五位都清零
1111 1111 1111 1111 .... 1101 0111======(0xffffffd7)16
b = b & 0xffffffd7 ====> (两步):
b = b & (~(0x1<<3))
b = b & (~(0x1<<5))
一步:b = (b & (~(0x1<<3)) ) & (~(0x1<<5))
练习:
1.将a的第三位和第四位置一 1100
a =a | (0x1<<3) a =a | (0x1<<4)
2.将a的第二位和第三位先清零然后置一
a = a & (~(0x1<<2)) a = a & (~(0x1<<3)) ===> a & (~(0x1<<2))& (~(0x1<<3)) ==>
a = a & (~(0x3<<2));
a = a | (0x1<<2) | (0x1<<3); ===> a = a | (0x3<<2)
3.将a的第5,4,3,2这四个位分别设置为 0101
a = a & (~(0x1<<5));
a = a | (0x1<<4);
a = a & (~(0x1<<3));
a = a | (0x1<<2);
 
/******************************************************************************/
 
 
 
/******************************************连续的寄存器置一清零(位域)*********************************************/
位域:操作需要先清零再操作
1.将a的第5,4,3,2这四个位分别设置为 0101
a = a & (~(0xf<<2)) ; //先清零 f指的是连续4位为1 2代表从第二位开始 取反之后又为4个0
a = a | (0x5<<2);      //设置 5指的是0101 2代表从第二位开始
/*******************************************十六进制与二进制对应表**************************************************/
 
1 001
2 010
3 011
4 100
5 0101
6 0110
7 0111
8 1000
9 1001
a 1010
b 1011
c 1100
d 1101
e 1110
f 1111
 
 
 

与或左移右移操作在ARM寄存器配置中的作用的更多相关文章

  1. ARM寄存器的8种寻址方式01

    一.立即数寻址 操作数由指令本身给出 MOV r0,#0x0F //是所有寻址方式里面速度最快的,但是受到合法立即数的限制 立即数要求以#和$开头 十六进制,#后跟0x:十进制,#后直接加:八进制,# ...

  2. ARM寄存器学习,王明学learn

    ARM寄存器学习 ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器.但是这些寄存器不能被同时访问,具体哪些寄存器是可以访问的,取决ARM处理器的工作状态及具体的运行模式. ...

  3. java左移右移运算符

    http://blog.csdn.net/dandanteng/article/details/7433531 首先要明白一点,这里面所有的操作都是针对存储在计算机中中二进制的操作,那么就要知道,正数 ...

  4. 【转载】c语言数据的左移右移

    原文地址:http://www.cnblogs.com/myblesh/articles/2431806.html 由于在飞控程序中执行效率对程序的影响相当大,所以一个好的运算效率很重要.左移右移比单 ...

  5. 【嵌入式开发】ARM 芯片简介 (ARM芯片类型 | ARM处理器工作模式 | ARM 寄存器 | ARM 寻址)

    : 12MHz 晶振 对应 405 ~ 532 MHz 处理速度; -- : 16K 指令缓存, 16K 数据缓存; -- : 32KB 指令缓存, 32KB 数据缓存; (3) 内存接口对比 : 提 ...

  6. arm寄存器

    ARM 处理器拥有 37 个寄存器. 这些寄存器按部分重叠组方式加以排列. 每个处理器模式都有一个不同的寄存器组. 编组的寄存器为处理处理器异常和特权操作提供了快速的上下文切换. 提供了下列寄存器:三 ...

  7. ARM寄存器介绍

    ARM处理器共有37个寄存器.其中包括:31个通用寄存器,包括程序计数器(PC)在内.这些寄存器都是32位寄存器.以及6个32位状态寄存器.但目前只使用了其中12位.ARM处理器共有7种不同的处理器模 ...

  8. java中的左移 右移

    java移位运算符:<<(左移).>>(带符号右移)和>>>(无符号右移). 1. 左移运算符 左移运算符<<使指定值的所有位都左移规定的次数. ...

  9. Arm寄存器介绍及汇编基础

    一.ARM处理器支持7种工作模式 ① 用户模式(USR): 用于正常执行程序(The normal ARM program execution state) ② 快速中断模式(FIQ): 用于高速数据 ...

随机推荐

  1. [django/mysql] 使用distinct在mysql中查询多条不重复记录值的解决办法

    前言:不废话.,直接进入正文 正文: 如何使用distinct在mysql中查询多条不重复记录值? 首先,我们必须知道在django中模型执行查询有两种方法: 第一种,使用django给出的api,例 ...

  2. 架构实例之SpringTest

    架构实例之SpringTest 1.开发工具和开发环境       开发工具: MyEclipse10,JDK1.6.0_13(32位),Tomcat7.0(32位),mysql5.7.13 开发环境 ...

  3. [WPF系列]-基础 TextBlock

    AUTOMATICALLY SHOWING TOOLTIPS ON A TRIMMED TEXTBLOCK (SILVERLIGHT + WPF)

  4. 一次ie8模式下click无反应的小事

    想起了小学时候数不尽的一件小事,哎,那夕阳下的奔跑,是我逝去的青春啊. 言归正传,先上图: <select id="cardNoList" size="4" ...

  5. 使用scrollpagination实现页面底端自动加载无需翻页功能

    当阅读到页面最底端的时候,会自动显示一个"加载中"的功能,并自动从服务器端无刷新的将内容下载到本地浏览器显示. 这样的自动加载功能是如何实现的?jQuery的插件 ScrollPa ...

  6. TCP/IP、Http、Socket、XMPP-从入门到深入

    TCP/IP.Http.Socket.XMPP-从入门到深入 终极iOS程序猿 2016-12-29 18:27 为了便于大家理解和记忆,我们先对这几个概念进行的介绍,然后分析他们的不同,再进行详细的 ...

  7. SDN与NFV技术在云数据中心的规模应用探讨

    Neo 2016-1-29 | 发表评论 编者按:以云数据中心为切入点,首先对SDN领域中的叠加网络.SDN控制器.VxLAN 3种重要技术特点进行了研究,接下来对NFV领域中的通用服务器性能.服务链 ...

  8. viewport就是这回事

    前言 对于移动webapp开发人员来说,viewport是个很重要的东西,容易用但很多时候都是不明白的,于是我决心去弄清楚它. <meta name="viewport" c ...

  9. redis的数据类型和指令

    1.全局key操作: 测试指令: 全局key操作命令:忽略与key关联的value的类型 删 flushdb 清空当前选择的数据库 del mykey mykey2 删除了两个 Keys 改 move ...

  10. 线段树 HDU 3397(真)

    5 种操作  0 1 然后 异或 似乎这种2个更新的先后每次都搞不清 覆盖有覆盖就可以不异或 也不知道为什么 #include<stdio.h> #include<string.h& ...