判断arm立即数是否合法的小程序

      今天老师布置了课后习题,有一题是判断立即数的,大家都知道,arm里的立即数并非都是合法的。

 

      描述:如立即数记作 <immediate> ,8位常数记作immed_8,4位的循环右移值记作rotate_imm,有效的立即数是由一个8位的立即数循环左移偶数位得到,则有效立即数immediate可表示成:
<immediate>   =   immed_8循环右移(   2   *   rotate_imm   )

例:有效立即数   0x0000F200,0x00110000,   0x00012800
      无效立即数   0x1010,   0x00102,   0xFF1000
显然,对于8位立即数都是有效的。

 

      其实从定义上判断一个数是不是立即数也很简单的:

 

1.看所有的bit位为1的是否在一个字节中

2.若1条件满足,则看是否可以经过偶数位左移得到

 

满足这两个条件的就是合法的立即数了,不过还是写了一个小程序来判断,看来我还是这么的懒,嘻嘻。

 

 

----------------------------------------------------------------------------------  

转载我博客文章郑重声明:技术性网站著名原创作者即可转载,商业性网站必须经过我的同意才能转载,否则追究责任——
pang123hui的博客:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值