| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 479 人关注过本帖
标题:高八位低八位互换用加法的问题
只看楼主 加入收藏
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
快速回复:高八位低八位互换用加法的问题
数据加载中...
 
   



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

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