单片机中整数循环左移_irol,整数循环右移_iror。这个整数怎么移位的呢? 位移位我懂。

a=0xA5A5;b=_irol_(a,1);//bnowis0xD2D2我不明白左移的过程。请各位给咱这个菜鸟解答。百度搜不出来。下面是帮助文件的写法:#include... a = 0xA5A5;
b = _irol_(a,1); // b now is 0xD2D2

我不明白左移的过程。请各位给咱这个菜鸟解答。百度搜不出来。
下面是帮助文件的写法:
#include <intrins.h>
void tst_iror (void) {
int a;
int b;
a = 0xA5A5;
b = _irol_(a,1); /* b now is 0xD2D2 */
}

a:A5A5: 10100101 10100101
b:D2D2: 11010010 11010010
如果按一楼的回答,如果a位左移1一个整数位就是位左移1位?那结果应该是 01001011 01001011这个结果是4B4B啊。没大懂,能不能详细的写下整数循环左移1位的步骤,谢谢
展开
 我来答
柳怀沫
2011-01-27 · TA获得超过711个赞
知道小有建树答主
回答量:187
采纳率:0%
帮助的人:171万
展开全部
_crol_ 字符循环左移
_cror_ 字符循环右移
_irol_ 整数循环左移
_iror_ 整数循环右移
_lrol_ 长整数循环左移
_lror_ 长整数循环右移

你的这个结果是错的
a = 0xA5A5;
b = _irol_(a,1) ; 执行后 b=0x4b4b;

按照你的结果应给是这样:
a = 0xA5A5;
b = _iror_(a,1) ; 执行后 b=0xd2d2;

PS: _iror_(a,1) 表示把变量a 循环右移1位
不懂空手道
2011-01-27 · TA获得超过103个赞
知道小有建树答主
回答量:97
采纳率:0%
帮助的人:110万
展开全部
既然你懂位移位,你把操作数A5A5和结果转换成二进制就明白了:

A5A5: 1010010110100101
D2D2: 1101001011010010

其中D2D2是操作数a左移1位后得到的结果,末尾补零,最高位的1是标志位。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
等半尽暴闯十堡2C
2011-01-27 · TA获得超过2475个赞
知道小有建树答主
回答量:1042
采纳率:50%
帮助的人:454万
展开全部
从结果看,这可是循环右移啊。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式