中易网

C++ int型如何分别对进行高16位和低16位的操作

答案:3  悬赏:30  
解决时间 2021-01-17 18:45
  • 提问者网友:你给我的爱
  • 2021-01-16 20:59
C++ int型如何分别对进行高16位和低16位的操作
最佳答案
  • 二级知识专家网友:鸠书
  • 2021-01-16 21:43
方法1,用 & 运算取出
int x,xl,xh;
xl = x & 0x0000ffff;
xh = (x & 0xffff0000) >> 16;

方法2,用 union
typedef union {
unsigned long int i;// 或 int i
unsigned char s[4];
} IS4;
IS4 x;
x.i -- 32 bit 整数
x.s[0],x.s[1]-- 高(或低)16位
x.s[2],x.s[3]-- 低(或高)16位
对s 的加工,就对i加了工。
全部回答
  • 1楼网友:污到你湿
  • 2021-01-16 23:43
既然是c++,那最简单的就是使用标准类库了啊,用BitSet类库,你想对那个位操作都行的,
  • 2楼网友:逃夭
  • 2021-01-16 22:22
方法一
unsigned char high = (num >> 16)&0x0000fff;
//上面必须有最后的&,除非num定义为unsigned int
//否则如果int num<0时右移前面会补1
unsigned char low = num & 0x0000ffff;
方法二
struct A{
#ifdef __little_endian
///这里必须要有ifdef,大小数在先的时候字节排列顺序不一样
int low:16;
int high:16;
#else
int high:16;
int low:16;
#endif
};
union {
int num;
struct A part;
}
part.low;
part.high;
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息