C 语言,关于位的赋值问题

2016-06-07 15:58:35 +08:00
 814084764

问一个问题:有 byte[] dst ,7 个字节。 如何给前面 12bit 赋值为 0xfff 。给第 13bit 赋值为 0 ?

2171 次点击
所在节点    C
9 条回复
catro
2016-06-07 16:50:33 +08:00
dst[0] = 0xFF;
dst[1]在没有初始值的情况下,
dst[1] = 0xF0;
有初始值的情况下,
dst[1] != 0xF0;
dst[1] &= 0xF7;
zodiac1111
2016-06-07 18:18:53 +08:00
位域如何?
am241
2016-06-07 19:10:22 +08:00
变量内部
位清零:
x &= 0b1110111;
位赋值:
x |= 0b0001000;
sfqtsh
2016-06-07 19:39:03 +08:00
C 语言有 byte 类型?有 type[] var 这种写法?
chiu
2016-06-07 19:42:46 +08:00
暂且认为你说的“前面 12bit ”,是指“低 12bit ”。

*dst |= 0x00000000000FFF;
*dst &= 0xFFFFFFFFFFEFFF;
Neveroldmilk
2016-06-08 09:20:13 +08:00
@chiu 哥们,一个 16 进制数代表 4bit......
chiu
2016-06-08 09:52:16 +08:00
@Neveroldmilk 对啊, LZ 不是说 dst 长度为 7 个字节吗?
adadada
2016-06-08 12:29:29 +08:00
这个有给定尾端吗?
ilotuo
2016-06-08 13:05:10 +08:00
uint64_t *tmp = dst;
tmp |=0xfff;
tmp &=(~0x1000);

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/284156

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX