标题:高八位低八位互换用加法的问题
只看楼主
linonon
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2015-4-6
结帖率:0
 问题点数:0 回复次数:2 
高八位低八位互换用加法的问题
#include<stdio.h>
int main()
{int t=1,NUM;
unsigned short x,x1,x2;
scanf("%d",&NUM);
while(t<=NUM)
{   scanf("%hu",&x);
    x1=x>>12;
    x2=x<<12;
    x=(((x<<4)>>8)<<4)+x1+x2;
    printf("%hu\n",x);
    t++;
}

return 0;
}




这题我用逻辑尺可以做,我又试了试用加法,就有些情况可以,有些情况不行,请问事为什么呢?
样例:
输入    输出(正确)
1024    1024(1024)
1234    9424(9424)
5678    63009(58913)
5695    1585(63025)

我也算了他们的二进制
1024 :0000 0100 0000 0000
1234 :0000 0100 1101 0010 —— 9244 : 0010 0100 1101 0000
5678 :0001 0110 0011 1110 —— 63009 :1111 0110 0010 0001 —— 58913 :  1110 0110 0011 0001
5695 :0001 0110 0011 1111 —— 1585 : 0000 0110 0011 0001 —— 63025 :  1111 0110 0011 0001


谢谢各位!
搜索更多相关主题的帖子: include return 二进制 
2015-04-19 12:45
linonon
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2015-4-6
得分:0 
然后我发现,把((x<<4)>>8)<<4)  这一步拆分以后就没有问题了,究竟是为什么呢。。
2015-04-19 14:07
linonon
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2015-4-6
得分:0 
有人吗
2015-04-19 17:22



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-444228-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.264401 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved