C语言中的循环移位计算?

24循环左移2位为什么得到的是120,循环右移2位得到的为什么是5,不应该分别是96和6吗?... 24循环左移2位为什么得到的是120,循环右移2位得到的为什么是5,不应该分别是96和6吗? 展开
 我来答
microroom
科技发烧友

2020-07-18 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:7118
采纳率:83%
帮助的人:1611万
展开全部
因为是按8进制输入的,8进制的24换成10进制就是20,换成2进制就是00010100(以1字节表示)。而00010100循环右移2位后就是00000101,即10进制的5,而5按8进制输出(输出格式为%o),就是5。

00010100循环左移2位后是01010000,用10进制表示就是80,而80按8进制输出(输出格式为%o),就是120。
追问
为什么8进制的24换成10进制就是20
追答
即4*8^0+2*8^1=4+16=20
哒桦bM

2022-06-24 · 超过68用户采纳过TA的回答
知道小有建树答主
回答量:749
采纳率:32%
帮助的人:23.6万
展开全部
for(i=0;i<k;i++) //进行k次移动
{
t=a[n-1]; //保存最右的数据循环右移是将所有数向右移动,移出来的数放到最左边,如此反复
for(j=n-1;j>0;j--) //把所有数据向右移动一位
{
a[j]=a[j-1];
}
a[0]=t; //把移出来的数据放到最左
}
这是很简洁的移位算法,你的算法一时还看不明白。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
挺拔还顺利灬丁香6856

2022-06-24 · 超过88用户采纳过TA的回答
知道小有建树答主
回答量:1174
采纳率:25%
帮助的人:31.1万
展开全部
for(i=0;i<k;i++) //进行k次移动
{
t=a[n-1]; //保存最右的数据循环右移是将所有数向右移动,移出来的数放到最左边,如此反复
for(j=n-1;j>0;j--) //把所有数据向右移动一位
{
a[j]=a[j-1];
}
a[0]=t; //把移出来的数据放到最左
}
这是很简洁的移位算法,你的算法一时还看不明白。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhangsonglin_c
高粉答主

2020-07-18 · 醉心答题,欢迎关注
知道大有可为答主
回答量:3.7万
采纳率:83%
帮助的人:6976万
展开全部
首先搞清楚,数据类型,如果是8位整型数,24应该是下面的2进制数:
24=16+8=(0001 1000)2
循环左移两位是:
(0110 0000)2=64+32=96
循环右移两位是:
(0000 0110)2=4+2=6
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式