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

比如: int a=8947848; 即:0x888888,这个是四字节,我如何为其高位或者低位赋值而别的任然不变?如将其低两字节赋值为0,就成了8912896,即0x880000。
对于int64 呢,如何处理?
除了采用内存拷贝的方式

第1个回答  2010-08-19
用位运算,先与后或
例如 a=a&0xffffff00 这样其低两字节会清零
然后 a=a|0x000000ef 这样其低两字节会置ef,要赋其他值相应改动即可
甚至 不一定是整字节的改变,可以改变任意的若干位,只要设计好与,或得值即可
第2个回答  2010-08-19
这个吗,很简单的:
int a = 0x1234ABCD;
unsigned char * b = (unsigned char *)a;
然后你修改任何一个字节都可以:
b[0] = 0;
b[1] = 0x67;
b[2] = 0xEF;
b[3] = 0x89;
然后a的值就变成了0x89EF6700本回答被提问者采纳
第3个回答  2010-08-19
0x888888是3个字节。每个16进制数表示4个位。
一般都是用位操作符来实现0和1的切换。
分2步
1.,生成需要的mask,也就是掩码。
如 int b = 0xff0000;
2用掩码与目标操作得到结果
如 a = a | b;
第4个回答  2010-08-19
可以用位运算快速改变变量某几位的值:
要将指定位置1可以将初值和X进行 或 操作(其中X指:指定位为1其他位均为0)
要将指定位置0可以将初值和X进行 与 操作(其中X指:指定位为0其他位均为1)
相似回答