请教C语言程序里如何给地位赋值?
比如:inta=8947848;即:0x888888,这个是四字节,我如何为其高位或者低位赋值而别的任然不变?如将其低两字节赋值为0,就成了8912896,即0x8800...
比如: int a=8947848; 即:0x888888,这个是四字节,我如何为其高位或者低位赋值而别的任然不变?如将其低两字节赋值为0,就成了8912896,即0x880000。
对于int64 呢,如何处理?
除了采用内存拷贝的方式 展开
对于int64 呢,如何处理?
除了采用内存拷贝的方式 展开
展开全部
用位运算,先与后或
例如 a=a&0xffffff00 这样其低两字节会清零
然后 a=a|0x000000ef 这样其低两字节会置ef,要赋其他值相应改动即可
甚至 不一定是整字节的改变,可以改变任意的若干位,只要设计好与,或得值即可
例如 a=a&0xffffff00 这样其低两字节会清零
然后 a=a|0x000000ef 这样其低两字节会置ef,要赋其他值相应改动即可
甚至 不一定是整字节的改变,可以改变任意的若干位,只要设计好与,或得值即可
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个吗,很简单的:
int a = 0x1234ABCD;
unsigned char * b = (unsigned char *)a;
然后你修改任何一个字节都可以:
b[0] = 0;
b[1] = 0x67;
b[2] = 0xEF;
b[3] = 0x89;
然后a的值就变成了0x89EF6700
int a = 0x1234ABCD;
unsigned char * b = (unsigned char *)a;
然后你修改任何一个字节都可以:
b[0] = 0;
b[1] = 0x67;
b[2] = 0xEF;
b[3] = 0x89;
然后a的值就变成了0x89EF6700
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
0x888888是3个字节。每个16进制数表示4个位。
一般都是用位操作符来实现0和1的切换。
分2步
1.,生成需要的mask,也就是掩码。
如 int b = 0xff0000;
2用掩码与目标操作得到结果
如 a = a | b;
一般都是用位操作符来实现0和1的切换。
分2步
1.,生成需要的mask,也就是掩码。
如 int b = 0xff0000;
2用掩码与目标操作得到结果
如 a = a | b;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以用位运算快速改变变量某几位的值:
要将指定位置1可以将初值和X进行 或 操作(其中X指:指定位为1其他位均为0)
要将指定位置0可以将初值和X进行 与 操作(其中X指:指定位为0其他位均为1)
要将指定位置1可以将初值和X进行 或 操作(其中X指:指定位为1其他位均为0)
要将指定位置0可以将初值和X进行 与 操作(其中X指:指定位为0其他位均为1)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询