因为rol是循环左移指令,所以左移出来的最高位会移入最低位和cf
因为ax0428h
0428h0000010000101000h
左移两位后,变成了000100001010000010a0h
楼主,到了这里,你可以这么做,因为是循环左移,所以左移掉的位数,直接接到二进制串的后面就行了
例如这道题(00)00010000101000,我们把它的前两位去掉,然后接到后面
00010000101000(00)
ps:若有不明白的地方,可以追问
算术移位当乘数或除数是2n时,算术移位用来快速地完成对整数进行乘法或除法的运算算数左移n位相当于乘上2n,执行方法是把原来的数中每一位都向左移动n个位置,左面移出的高位丢弃不要,右面低位空出的位置上全部补02)
逻辑移位逻辑左移n位的执行方法,是把原来的数中每一位都向左移动n个位置,左面移出的高位丢弃不要,右面低位空出的位置上全部补0逻辑右移n位的执行方法是把原来数中的每一位都向右移动n个位置,右面移出的低位丢弃不要,左面高位空出的位置上全部补0逻辑移位:不考虑正负号算术移位:考虑正负号
eg:1000000000000000(右移2位)0000000000000000(左移2位)逻辑移位:00100000000000000000000000000000算术移位:11100000000000001000000000000000注:算术右移时,最前面是1时,补1,否则,补0逻辑左移时,补0逻辑移位时,不用保留正负号(第一个),统一补0
逻辑移位(不管是左移位还是右移位)都是空缺处补0例如:movax,1100_0111_0110_1000Bmovcl,3shlax,cl;结果ax0011_1011_0100_0000movax,1100_0111_0110_1000Bmovcl,3shrax,cl;结果ax0001_1000_1110_1101算术移位要保证符号位的不改变(算术左移位补0,算术右移位看符号位)例如:movax,1100_0111_0110_1000Bmovcl,3salax,cl;结果ax0011_1011_0100_0000movax,1100_0111_0110_1000Bmovcl,3sarax,cl;结果ax1111_1000_1110_1101movax,0100_0111_0110_1000Bmovcl,3sarax,cl;结果ax0000_1000_1110_1101
逻辑移位逻辑左移n位的执行方法,是把原来的数中每一位都向左移动n个位置,左面移出的高位丢弃不要,右面低位空出的位置上全部补0逻辑右移n位的执行方法是把原来数中的每一位都向右移动n个位置,右面移出的低位丢弃不要,左面高位空出的位置上全部补0
图里面解释得很清楚了,对NORFLASH接口地址信号左移一位的原因是CPU按字节(Byte,8bit宽)来存取,而FLASH按半字(Halfword,16bit宽)来存取
考虑这种情况,CPU要读FLASH地址存储内容的第0个和第1个字节,由于CPU按字节存取,那么他要进行两次对FLASH的读操作
1假设不对CPU地址信号处理(不左移一位),那么出现在地址总线上的信号分别是0和1,那么FLASH会做出什么动作呢?第一次读,FLASH把他的第0个半字放在数据总线上给CPU读取,第二次读,FLASH把他的第1个半字放在数据总线上给CPU读取,那么CPU实际上读到的是第0个和2个字节的数据,读到的和想读的不一致
2如果对CPU地址信号左移一位,则以上两次读取地址总线上的信号都是0,第一次读时把读到的半字的低8bit返给CPU,第二次读时把读到的半字的高8bit返给CPU
原因:第一个klt;lt;1只是表示k左移一位,但是这个运算结果并没有给k而是依旧保存在计算机cpu中的运算器中,同时你是用%d将这个结果打印出来,用%d格式表示把这个结果看成了int型,即类型扩大为int型,klt;lt;1相当于2*k,在int型中65534没有出界,所以就是这个结果第二个jlt;lt;1;等价于jjlt;lt;1;你看运算的结果给了j,而j是shortint型,所以此时j1111111111111110(最后一位为补进的0),而shortint最多是16位,这样它的最高位为1,所以是负数,这是个补码,其原码为-(1111111111111110-1)按位取反,即为-0000000000000010-2,最后用%d打印出的就是这个结果
移位运算符就是在二进制的基础上对数字进行平移按照平移的方向和填充数字的规则分为三种:lt;lt;(左移),gt;gt;(带符号右移)和gt;gt;gt;(无符号右移)
在移位运算时,byt
e,short和char类型移位后的结果会变成int类型,对于byt
e,shor
t,char和int进行移位时,规定实际移动的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结果相同移动long型的数值时,规定实际移动的次数是移动次数和64的余数,也就是移动66次和移动2次得到的结果相同
三种移位运算符的移动规则和使用如下所示:lt;lt;运算规则:按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零
语法格式:需要移位的数字lt;lt;移位的次数例如:3lt;lt;2,则是将数字3左移2位计算过程:3lt;lt;2首先把3转换为二进制数字00000000000000000000000000000011,然后把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位,最后在低位(右侧)的两个空位补零
则得到的最终结果是00000000000000000000000000001100,则转换为十进制是12数学意义:在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方gt;gt;运算规则:按二进制形式把所有的数字向右移动对应巍峨位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1
语法格式:需要移位的数字gt;gt;移位的次数例如11gt;gt;2,则是将数字11右移2位计算过程:11的二进制形式为:00000000000000000000000000001011,然后把低位的最后两个数字移出,因为该数字是正数,所以在高位补零
则得到的最终结果是00000000000000000000000000000010转换为十进制是3数学意义:右移一位相当于除2,右移n位相当于除以2的n次方这里是取商哈,余数就不要了gt;gt;gt;运算规则:按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补零对于正数来说和带符号右移相同,对于负数来说不同
其他结构和gt;gt;相似
上一篇:防蹭网怎么设置,怎么才能防止蹭网
下一篇 > :钢丝绳张力反弹测算法,钢丝绳计算
还没有评论,快来抢沙发吧!
最新发现
相关资讯
钢丝绳张力反弹测算法,钢丝绳计算
那么,由于两个Ft是对称的,所以其中一个Ft在恢复力方向上的分力就是300/2=150N用力的图示法,150N的力相当于12mm,由直角三角形求斜边的方法即可求出斜边长度,对应的就是Ft也就是:150N/12mm=Ft/sqrt(12^2125^2).注:其中sqrt是开平
2024-06-03 16:28:14
怎么把文件上传到百度,怎么把文件传到百度上
3,怎样上传自己的文档到百度文库
2024-06-03 16:27:41
设置里面找,手机设置里怎么找不到定位服务
二,还原隐私设置1.首先找到手机上的设置图标,点击打开2.在设置里,找到通用,点击进入3.然后用手指向上轻扫,找到还原4.接着,点击还原位置与隐私5.系统会确认是否要真的还原,点击还原设置6.等待系统还原功能后,尝试
2024-06-03 16:27:10
程序控制视频接口自动切换,康佳智能电视视频源怎么自动切换
基于PC机的视频监控系统采用软件设计,实现摄像机到监视器的视频矩阵切换,云台和镜头的控制,通过串口连接报警设备的报警信息,并通过程序编程自动完成视频切换,云台控制,报警联动,报警录像等各项控制功能
2024-06-03 16:25:34
目录如何生成,怎么样生成目录啊
二,三部分级别相同),将鼠标停留在1第一节:关于本节处,将级别调整为2级,将鼠标停留在(1)主要内容上,将级别调整为3级,直至所有标题设置大纲级别
2024-06-03 16:25:01
新闻热榜
热门游戏
精彩专题