码迷,mamicode.com
首页 > 其他好文 > 详细

如何将一个32位的高16位和低16位相加

时间:2017-06-09 19:20:50      阅读:291      评论:0      收藏:0      [点我收藏+]

标签:32位   return   include   short   unsigned   方法   利用   sign   struct   

有两种不错的方法可以实现该操作

方法一:利用移位操作可以很容易的实现

#include <stdio.h>

int main()
{
  unsigned int a =0x11223344;
  printf("%0x\n",(a>>16) +( a & 0xFFFF));
  return 0;
}

 

方法二:利用结构体和共用体实现32位数高16位和低16为相加

#include <stdio.h>
union
{
  struct
  {
    unsigned short low;
    unsigned short high;
  }x;

  unsigned int y;

}num;
int main()
{
  num.y=0x11223344;
  printf("%0x\n",num.x.low+num.x.high);
  return 0;
}

友情提示:共用体在任一时刻,只能有一个数据元素占有该内存空间。这就是该程序的巧妙之处。

如何将一个32位的高16位和低16位相加

标签:32位   return   include   short   unsigned   方法   利用   sign   struct   

原文地址:http://www.cnblogs.com/-glb/p/6973191.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!