[问题] 这两行code的应用场合

楼主: antoniee (求婚大作战好看)   2017-07-15 11:11:36
开发平台(Platform): (Ex: Win10, Linux, ...)
Linux
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
GCC
问题(Question):
请问一下有没有人知道下面那段程式码,会用在跟内存管理例程有关的什么场合吗...
我只看的出来他是把p指到的内容的LSB清空
查了一下一般会这样做主要是把数字变成偶数或做memory address的alignment
但这种将指到char的内容的lsb清空
实在想不出应用场合在哪......
程式码(Code):(请善用置底文网页, 记得排版)
char *p;
...
*p = (*p) & ~1;
作者: Hazukashiine (私は幸せです)   2017-07-15 11:28:00
LSB 的 B 是 byte, lsb 的 b 才是 bit OuO但是还是要看上下文 也不一定是这样 XD但是你的问题怪怪的 问这行程式码 能干嘛没有意义这就是一个位元运算而已 能应用在你会需要它的地方
楼主: antoniee (求婚大作战好看)   2017-07-15 11:34:00
这是网络看到的一个题目 可能要了解内存管理例程才想得出应用在哪吧@@"
作者: Hazukashiine (私は幸せです)   2017-07-15 11:40:00
拿来做 bit flags/masks 吧?
作者: ggBird (ggBird)   2017-07-15 11:45:00
运用很多呀,写driver读取暂存器常要对某个field做设定
楼主: antoniee (求婚大作战好看)   2017-07-15 11:55:00
恩 也常看到bit flag/mask设置没错可能我太执著于要找到跟内存管理例程的关系
作者: chuegou (chuegou)   2017-07-15 12:19:00
这里的~1 结果会是几位元?
作者: SeamusBerloz (轩摩斯)   2017-07-15 13:42:00
8位元暂存器清除最低位元?
作者: kevingwn (如云如风的人生)   2017-07-16 20:14:00
https://hackmd.io/s/B1wb8CyHb 出自这网址的Q3吗?
楼主: antoniee (求婚大作战好看)   2017-07-16 21:17:00
对阿....
作者: jasonwu23 (jasonwu)   2017-07-16 23:25:00
就是把bit0清掉 这样写不清楚一般都是 &=~ 0x01 这样就应该懂了吧意思就是 不管bit0现在是1还是0 经过这行就变0

Links booklink

Contact Us: admin [ a t ] ucptt.com