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

 我来答
傅澍伯莲
2019-10-29 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:36%
帮助的人:883万
展开全部
当移位位数大于或者等于数据类型的位数时,编译器会报告给你一个警告。
对于移位运算,如果移位位数大于或者等于数据类型的位数,则会使用余数进行移位,
例如
:int
i
=
8;
i
>>
34
,由于
int
为32位(一般情况下)
,而
34
>
32

所以
i
>>
34
将等同于
i
>>34%32,既
i
>>
2。
所以你的情况,
a
>>
0x20
实际上是
a
>>
0,既没有移位,所以结果仍为
1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
明濮存经群
2019-10-25 · TA获得超过3.1万个赞
知道大有可为答主
回答量:1.2万
采纳率:32%
帮助的人:952万
展开全部
方法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加了工。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式