请教C语言程序里如何给地位赋值?

比如:inta=8947848;即:0x888888,这个是四字节,我如何为其高位或者低位赋值而别的任然不变?如将其低两字节赋值为0,就成了8912896,即0x8800... 比如: int a=8947848; 即:0x888888,这个是四字节,我如何为其高位或者低位赋值而别的任然不变?如将其低两字节赋值为0,就成了8912896,即0x880000。
对于int64 呢,如何处理?
除了采用内存拷贝的方式
展开
 我来答
Oo没有蜡oO
2010-08-19 · TA获得超过3036个赞
知道小有建树答主
回答量:1602
采纳率:0%
帮助的人:1277万
展开全部
用位运算,先与后或
例如 a=a&0xffffff00 这样其低两字节会清零
然后 a=a|0x000000ef 这样其低两字节会置ef,要赋其他值相应改动即可
甚至 不一定是整字节的改变,可以改变任意的若干位,只要设计好与,或得值即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
enochwills
2010-08-19 · TA获得超过4793个赞
知道大有可为答主
回答量:2031
采纳率:96%
帮助的人:1610万
展开全部
这个吗,很简单的:
int a = 0x1234ABCD;
unsigned char * b = (unsigned char *)a;
然后你修改任何一个字节都可以:
b[0] = 0;
b[1] = 0x67;
b[2] = 0xEF;
b[3] = 0x89;
然后a的值就变成了0x89EF6700
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
unknownace
2010-08-19 · TA获得超过283个赞
知道小有建树答主
回答量:205
采纳率:0%
帮助的人:230万
展开全部
0x888888是3个字节。每个16进制数表示4个位。
一般都是用位操作符来实现0和1的切换。
分2步
1.,生成需要的mask,也就是掩码。
如 int b = 0xff0000;
2用掩码与目标操作得到结果
如 a = a | b;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hujiafeng2
2010-08-19 · 超过10用户采纳过TA的回答
知道答主
回答量:76
采纳率:0%
帮助的人:0
展开全部
可以用位运算快速改变变量某几位的值:
要将指定位置1可以将初值和X进行 或 操作(其中X指:指定位为1其他位均为0)
要将指定位置0可以将初值和X进行 与 操作(其中X指:指定位为0其他位均为1)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式