中易网

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

答案:3  悬赏:30  
解决时间 2021-01-17 18:45
C++ int型如何分别对进行高16位和低16位的操作
最佳答案
方法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加了工。
全部回答
既然是c++,那最简单的就是使用标准类库了啊,用BitSet类库,你想对那个位操作都行的,
方法一
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;
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
WOW可不可以做一个宏,宏的要求如下,比如团
刚买了一个固态硬盘,安装系统是不小心断电了
某些化学概念在逻辑上存在右图所示关系,对下
世界石油储量还有多少
Mc折颜个人资料
长安轻型车地址在什么地方,我要处理点事
卧室门冲床尾好吧?
去黑鼻头快速见效的办法
钢丝螺套的标记方法
杜牙根什么意思
只要脊梁不弯,没有扛不起的山谁说的
元阳县民族中学地址在哪,我要去那里办事
傻根皮具护理地址有知道的么?有点事想过去
赵字怎么组词?
跪求旋律有点像《杀手》的一首歌(男歌手)
推荐资讯
十五年义务教育从什么时候开始
推荐一款苹果笔记本
为什么我在淘宝上评论别人的评价老是被删除?
PS最终幻想7与尤菲对话死机怎么搞
中国可以和那国女人结婚
人有三十二磕牙好不好
钻石广场停车场(玉山路99号钻石广场停车场)地
2米加700厘米等于多少厘
嫩姜如何吃可以去斑
梦见姓卫的女人
321份书一份1角问多少钱?
我男朋友原来说不喜欢腿太肥的女生,我说减肥
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?