由于刚开始学习ARM,看到很多<<这个符号,虽然想到了是左移,但是还有点茫然。

经过百度之后,才明白P0|=1<<3;就相当于把P0^3置1

原因如下:

1=00000001;

1<<3=00001000;

P0|00001000即将P0^3=1;(P0|=1<<0;即P0^0=1;)

而想要置0 的话,只要这样做就好:P0 &=~(1<<0);(即P0^0=0);

【其中,&还有其他意思,在此一并说明,C语言中&也表示取地址。int m = (unsigned int)&i;即对i取地址,强制转化为无符号型int,然后赋值给m】

还有如果管脚是输入状态,要知道P0口某一位的值,则可以如此做:

P0&(1<<7)==(1<<7)  表示P0的第七位为1,否则P0的第7位为0;

这是由于x与0为0,x与1为x。

取反操作细节:

对于char、bool、unsigned char等低于int字节数的类型,进行运算的时候首先进行提升,因此在进行~t运算之前,先要将其放入32位寄存器,由于是unsigned char,因此前面补位全补0,因此0xa5-->0x000000a5,然后取反为0xffffff5a,然后再向右移四位为0xfffffff5,然后再转化为unsigned char型的0xf5赋值给i,因此最后输出结果为0xf5。
unsigned char、char、bool等低于int型的类型,进行运算的时候都要先提升再运算,提升时根据signed和unsigned,在前面补位为0或者1,若是unsigned,则直接前面全补0;若为signed,则根据最高位为0还是1,若为0则全部补位为0,若为1则全部补位为1。

~(1<<10)默认为有符号

位操作是一个很方便的操作,要深刻体会。

ARM学习随笔(1) 位操作相关推荐

  1. Ibatis学习随笔

    Ibatis学习随笔 < person >       < id > 1 </ id >     < firstName > Clinton </ ...

  2. Delphi面向对象学习随笔六:接口

    Delphi面向对象学习随笔六:接口   Delphi面向对象学习随笔六:接口 作者:巴哈姆特 (转载请注明出处并保持完整) 在对象化中,类的继承是一个非常强大的机制:而更加强大的继承机制应该是来自从 ...

  3. python rowcount_PyQt(Python+Qt)学习随笔:QTableWidget的currentItem、rowCount、columnCount等部件状态属性访问方法...

    老猿将QTableWidget表格部件中反映部件当前情况的一些方法归类为部件状态访问方法,包括部件的行数.列数.当前项.当前行.当前列等属性访问方法. 1.行数rowCount QTableWidge ...

  4. C#程序集Assembly学习随笔(第一版)_AX

    ①什么是程序集? 可以把程序集简单理解为你的.NET项目在编译后生成的*.exe或*.dll文件. 嗯,这个确实简单了些,但我是这么理解的.详细: http://blog.csdn.net/sws83 ...

  5. Delphi面向对象学习随笔一:类与对象的关系

    Delphi面向对象学习随笔一:类与对象的关系 作者:巴哈姆特 http://www.cnpack.org (转载请注明出处并保持完整) 工作几年了,总想做点总结,于是有了这篇东西,叫随笔吧呵     ...

  6. 64位BASM学习随笔(一)

     64位BASM学习随笔(一) Delphi的BASM一直是我最喜爱的内嵌汇编语言,同C/C++的内联汇编相比,它更方便,更具灵活性,由于C/C++的内联汇编仅仅能是或插入式的汇编代码,函数花括号 ...

  7. 2021.3.14学习随笔

    学习随笔 摆仙果 题目具体链接 给定有规律的字符序列,对比输入的字符序列,对比相同的长度. 题目的不同之处:该题是字符串头部对齐.还有不对齐的,就类似与字符串匹配 #include<iostre ...

  8. Vue学习随笔+商城项目【上】

    更新日期:2021-02-10 晚 [新年快乐] 附:Vue学习随笔+商城项目[下] 目录(部分) (一)ES6补充 1.1块级作用域 1.1.1 什么是变量作用域 1.1.2 没有块级作用域造成的问 ...

  9. JAVA面试八股文宝典(黑马学习随笔)-- 基础篇

    学习随笔简介 跟随着黑马满老师的<Java八股文面试题视频教程,Java面试八股文宝典>学习,视频教程地址:Java八股文面试题视频教程,Java面试八股文宝典(含阿里.腾迅大厂java面 ...

最新文章

  1. Call to undefined function mysql_connect()
  2. Python基本语法_集合set/frozenset_内建方法详解
  3. 图像检测技术的研究现状
  4. 小米机器人虚拟墙设置_扫地机器人虚拟墙应该怎么放置使用
  5. Linux sed编辑器
  6. Windows下安装OpenSSL及其使用
  7. hdu3790最短路径问题(迪杰斯特拉算法+详解+代码)
  8. python连接mysql_Python 连接mysql与impala
  9. matlab中float类型的_Java局部变量类型推断(Var类型)的26条细则
  10. android 中在CMD中查看sqlite
  11. freemarker取数
  12. Unity 3D开发-C#脚本语言的一些基础用法
  13. Nginx二级目录反向代理网站
  14. mysql检查所作的修正_MySQL常见故障检测和修正_mysql
  15. 【华为设备命令最全大合集,快快收藏】
  16. access如何求平均单价_ACCESS中计算日均值
  17. java时钟指针_时钟 走动 一个应用线程实现指针运动的指针时钟程序 联合开发网 - pudn.com...
  18. 小米平板2(2015716)官方线刷包_救砖包_解账户锁
  19. 这个牛逼哄哄的数据库开源了
  20. vue02(脚手架,部署,helloworld)

热门文章

  1. goaccess踩坑记录
  2. 软件方法笔记6-系统用例规约
  3. 搭建汇编语言开发环境总结 利用DOSBox+TASM/MASM
  4. 文件扫描怎么弄?这三个简单方法试试看
  5. 探针技术-JavaAgent 和字节码增强技术-Byte Buddy
  6. 微博至 bilibili 视频搬运脚本
  7. 开源协议介绍 BSD、Apache Licence、GPL V2 、GPL V3 、LGPL、MIT
  8. 爬虫解析是干嘛用的?为什么要解析?
  9. 如何简单有效快速提高英语口语
  10. HCIE-Security Day42:IPsec高可用技术