C51编程中如何把两个字节合并成一个字?
时间:10-02
整理:3721RD
点击:
本人用51单片机读取DS18B20的温度值回来,读回来两个字节,用一个数组分别装高低字节,可是我想把它们合并成一个unsigned int 类型的一个字,然后除以0x10,因为读回来的数值要比实际的大0x10.例如16.0℃,读回来的值为 高位0x01,低位0x00;我该怎么把这来年各个自己合并成一个字呢?例如,unsigned int temp; temp=0x0100这样子的
高位左移8位+低位就行了
能不能用联合体来完成呢?
可以啊,合 并可以用各种方法,看你喜欢用哪种了
如果高字节左移8位,那岂不是全部变成0了?
高位左移8位是放到那个字里面了,没说清楚之前~~
unsigned int temp;
unsigned int temp,a,b;
mian()
{
temp=a<<4|b;
}
unsigned int temp,a,b;
mian()
{
temp=(a<<4)|b;
}
unsigned int temp;
unsigned char a,b;
mian()
{
temp=(a<<8)|b;
}
移位操作就好啦。
union Tempr{
unsigned char TempHL[2];
unsigned int TempResult;
};
将两个字节放入TempHL,最后TempResult就是最终值。不过移位更简单
不错。值得学习!
左移一位之后 高位不都全部移出去了么?全部变成0了 怎么和第二个字节相加啊?
不错不错学习一下哈哈