ARM学习随笔(1) 位操作
由于刚开始学习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) 位操作相关推荐
- Ibatis学习随笔
Ibatis学习随笔 < person > < id > 1 </ id > < firstName > Clinton </ ...
- Delphi面向对象学习随笔六:接口
Delphi面向对象学习随笔六:接口 Delphi面向对象学习随笔六:接口 作者:巴哈姆特 (转载请注明出处并保持完整) 在对象化中,类的继承是一个非常强大的机制:而更加强大的继承机制应该是来自从 ...
- python rowcount_PyQt(Python+Qt)学习随笔:QTableWidget的currentItem、rowCount、columnCount等部件状态属性访问方法...
老猿将QTableWidget表格部件中反映部件当前情况的一些方法归类为部件状态访问方法,包括部件的行数.列数.当前项.当前行.当前列等属性访问方法. 1.行数rowCount QTableWidge ...
- C#程序集Assembly学习随笔(第一版)_AX
①什么是程序集? 可以把程序集简单理解为你的.NET项目在编译后生成的*.exe或*.dll文件. 嗯,这个确实简单了些,但我是这么理解的.详细: http://blog.csdn.net/sws83 ...
- Delphi面向对象学习随笔一:类与对象的关系
Delphi面向对象学习随笔一:类与对象的关系 作者:巴哈姆特 http://www.cnpack.org (转载请注明出处并保持完整) 工作几年了,总想做点总结,于是有了这篇东西,叫随笔吧呵 ...
- 64位BASM学习随笔(一)
64位BASM学习随笔(一) Delphi的BASM一直是我最喜爱的内嵌汇编语言,同C/C++的内联汇编相比,它更方便,更具灵活性,由于C/C++的内联汇编仅仅能是或插入式的汇编代码,函数花括号 ...
- 2021.3.14学习随笔
学习随笔 摆仙果 题目具体链接 给定有规律的字符序列,对比输入的字符序列,对比相同的长度. 题目的不同之处:该题是字符串头部对齐.还有不对齐的,就类似与字符串匹配 #include<iostre ...
- Vue学习随笔+商城项目【上】
更新日期:2021-02-10 晚 [新年快乐] 附:Vue学习随笔+商城项目[下] 目录(部分) (一)ES6补充 1.1块级作用域 1.1.1 什么是变量作用域 1.1.2 没有块级作用域造成的问 ...
- JAVA面试八股文宝典(黑马学习随笔)-- 基础篇
学习随笔简介 跟随着黑马满老师的<Java八股文面试题视频教程,Java面试八股文宝典>学习,视频教程地址:Java八股文面试题视频教程,Java面试八股文宝典(含阿里.腾迅大厂java面 ...
最新文章
- Call to undefined function mysql_connect()
- Python基本语法_集合set/frozenset_内建方法详解
- 图像检测技术的研究现状
- 小米机器人虚拟墙设置_扫地机器人虚拟墙应该怎么放置使用
- Linux sed编辑器
- Windows下安装OpenSSL及其使用
- hdu3790最短路径问题(迪杰斯特拉算法+详解+代码)
- python连接mysql_Python 连接mysql与impala
- matlab中float类型的_Java局部变量类型推断(Var类型)的26条细则
- android 中在CMD中查看sqlite
- freemarker取数
- Unity 3D开发-C#脚本语言的一些基础用法
- Nginx二级目录反向代理网站
- mysql检查所作的修正_MySQL常见故障检测和修正_mysql
- 【华为设备命令最全大合集,快快收藏】
- access如何求平均单价_ACCESS中计算日均值
- java时钟指针_时钟 走动 一个应用线程实现指针运动的指针时钟程序 联合开发网 - pudn.com...
- 小米平板2(2015716)官方线刷包_救砖包_解账户锁
- 这个牛逼哄哄的数据库开源了
- vue02(脚手架,部署,helloworld)