[休闲]我也来发贴
/**************************************************
输入无符号整数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编辑过]