当前位置: 代码迷 >> C语言 >> [休闲]我也来发贴
  详细解决方案

[休闲]我也来发贴

热度:297   发布时间:2006-10-18 21:14:32.0
[休闲]我也来发贴

/**************************************************
输入无符号整数k和p,将k的低字节做为结果的高字节,
将p的低字节做为结果的低字节组成一个新的无符号整数u.
***************************************************/

#include <stdio.h>
#include <conio.h>

void main()
{
unsigned short k,p,u;
clrscr();
printf("Input two integer:\n");
scanf("%u%u",&k,&p);
k<<=8; /*把k的低字节右移到高字节,低字节填0*/
p&=255; /*把p的高字节填0,低字节不变*/
u=k+p; /*两者相加得到组合后的无符号短整数u*/
printf("%u",u);
getch();
}


小知识:(2进制)1&任何数结果都是原数不变.
0&任何数结果都是0,可以用来清零一些位.

解题思路:
先把k右移8位,这样就把K的低字节移到高字节了(右移时低字节会填0).
然后把P与255相,255的二进制的高字节全是0,低字节全是1,占2个字节,很特殊
后高字节全成了0,低字节不变
最后K+P就是组合后的结果

[此贴子已经被作者于2006-10-18 21:57:45编辑过]

搜索更多相关的解决方案: 休闲  

----------------解决方案--------------------------------------------------------
偶是人妖,
----------------解决方案--------------------------------------------------------
以下是引用jmasm在2006-10-18 21:29:44的发言:
偶是人妖,


----------------解决方案--------------------------------------------------------

以下是引用jmasm在2006-10-18 21:14:32的发言:

/**************************************************
输入无符号整数k和p,将k的低字节做为结果的高字节,
将p的低字节做为结果的低字节组成一个新的无符号整数u.
***************************************************/

#include <stdio.h>
#include <conio.h>

void main()
{
unsigned short k,p,u;
clrscr();
printf("Input two integer:\n");
scanf("%u%u",&k,&p);
k<<=8; /*把k的低字节右移到高字节,低字节填0*/
p&=255; /*把p的高字节填0,低字节不变*/
u=k+p; /*两者相加得到组合后的无符号短整数u*/
printf("%u",u);
getch();
}


小知识:(2进制)1&任何数结果都是原数不变.
0&任何数结果都是0,可以用来清零一些位.

解题思路:
先把k右移8位,这样就把K的低字节移到高字节了(右移时低字节会填0).
然后把P与255相,255的二进制的高字节全是0,低字节全为一,占2个字节,很特殊
后高字节全成了0,低字节不变
最后K+P就是组合后的结果



----------------解决方案--------------------------------------------------------
呵呵,谢谢楼上,打错了
----------------解决方案--------------------------------------------------------
  相关解决方案