[問題] 這兩行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