有一个unsigned long类型整数,分别将其前2个字节和后2个字节作为两个unsigned int类型整数输出?

(设一个int型数据占2个字节)
这题到底什么意思啊??
如果long那个数是5呢? 怎么输出? 输出两个5??
不太理解

unsigned long类型整数,分别将其前2个字节和后2个字节作为两个unsigned long数据类型如果占4个字节的话,比如:
5
在计算机里按二进位存储即:00000000 00000000 00000000 00000101
那么把前两个字节
00000000 00000000副给一个unsigned int变量,值为0

00000000 00000101副给另外一个unsigned int变量,值为5
即可
当然整个附值运算得借助于c语言中的位移操作来实现:>>或<<
看看着方面资料就明白了!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-11-28
就是一个unsigned long是占8个字节(也许题目有自己假设占几个字节),要求你将这个long型数据的前两个字节和后两个字节的内容分别当成两个int型数据,并且输出。
如果是5,那unsigned long数据中,前7个字节都是0,最后一个字节是5.
第2个回答  2012-05-25
void GetValue(unsigned long inValue, unsigned int *outValue1, unsigned int *outValue2)
{
unsigned long temp = (unsigned int)inValue<<16;
*outValue1=(unsigned int)temp>>16;
*outValue2 = (unsigned int)(inValue >> 16);
}

unsigned long value = 0x12345678;//分化unsigned long 前两个字节和后两个字节
unsigned int out1, out2;
GetValue(value, &out1, &out2);
printf("%x,%x\n",out1,out2);
第3个回答  2007-11-28
就按你所说的5
在计算机里按二进位存储即:00000000 00000000 00000000 00000101
按要求输出的话就是前两个八位为0输出,
后两个八位按5输出。
完毕