[求助]一个取数高低字节的问题
[求助]一个取数高低字节的问题编写一个函数fhl( ),
从无符号整数x中分别取出高字节和低字节,
并以十六进制数输出。
执行程序时,输入2008,写出输出结果。使用1~2种算法编程
算法1:利用位运算实现函数功能。
算法2:利用整除和求余运算实现函数功能。
算法3:利用指针实现函数功能。
我有个问题首先是16位比如1111111111111111 左8个1代表高字节吗,我们取出这8位的时候需要把后面8个0一起取在内?还是仅仅输出前8位代表高字节?
如果是上面那种想法
我想问一下算法三应该怎么算?
1,2算法我基本上算写出来了
大家还有没有其他方法做?
----------------解决方案--------------------------------------------------------
定义一个字符型指针,将该指针指向该整数(需强制转换)。这时,指针指向的地址就是整数的高八位,指针再自增一,则就指向了低八位。
----------------解决方案--------------------------------------------------------
以下是引用emyhello在2007-5-12 20:33:18的发言:
定义一个字符型指针,将该指针指向该整数(需强制转换)。这时,指针指向的地址就是整数的高八位,指针再自增一,则就指向了低八位。
定义一个字符型指针,将该指针指向该整数(需强制转换)。这时,指针指向的地址就是整数的高八位,指针再自增一,则就指向了低八位。
我有这样想过
但是这样类型不同 不会出错吗
----------------解决方案--------------------------------------------------------
可以通过强制类型转换。
#include<stdio.h>
int main()
{
unsigned int in_data,temp;
unsigned int *str=&in_data;
unsigned char *ptr;
printf ("please input the data:");
scanf ("%d",&in_data);
temp=(unsigned int)str;
ptr=(unsigned char *)temp;
printf ("\nthe hign is:%6u\nthe low is:%6u",*ptr,*ptr++);
getch();
}
能在WIN-TC中正常运行,由于时间匆忙没加注释,请原谅。
----------------解决方案--------------------------------------------------------
高低字节
以下是引用emyhello在2007-5-13 11:54:02的发言:
可以通过强制类型转换。
#include<stdio.h>
int main()
{
unsigned int in_data,temp;
unsigned int *str=&in_data;
unsigned char *ptr;
printf ("please input the data:");
scanf ("%d",&in_data);
temp=(unsigned int)str;
ptr=(unsigned char *)temp;
printf ("\nthe hign is:%6u\nthe low is:%6u",*ptr,*ptr++);
getch();
}
能在WIN-TC中正常运行,由于时间匆忙没加注释,请原谅。
可以通过强制类型转换。
#include<stdio.h>
int main()
{
unsigned int in_data,temp;
unsigned int *str=&in_data;
unsigned char *ptr;
printf ("please input the data:");
scanf ("%d",&in_data);
temp=(unsigned int)str;
ptr=(unsigned char *)temp;
printf ("\nthe hign is:%6u\nthe low is:%6u",*ptr,*ptr++);
getch();
}
能在WIN-TC中正常运行,由于时间匆忙没加注释,请原谅。
对于这句不是很理解
temp=(unsigned int)str;
temp不是无符号整型吗
str不是一个无符号整型的指针吗
这个赋值是把str转换成什么赋值给了temp?
----------------解决方案--------------------------------------------------------