[問題] 這兩行code的應用場合

看板C_and_CPP (C/C++)作者 (求婚大作戰好看)時間8年前 (2017/07/15 11:11), 8年前編輯推噓5(5012)
留言17則, 7人參與, 最新討論串1/1
開發平台(Platform): (Ex: Win10, Linux, ...) Linux 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) GCC 問題(Question): 請問一下有沒有人知道下面那段程式碼,會用在跟記憶體管理常式有關的什麼場合嗎... 我只看的出來他是把p指到的內容的LSB清空 查了一下一般會這樣做主要是把數字變成偶數或做memory address的alignment 但這種將指到char的內容的lsb清空 實在想不出應用場合在哪...... 程式碼(Code):(請善用置底文網頁, 記得排版) char *p; ... *p = (*p) & ~1; -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.231.147.208 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1500088298.A.991.html

07/15 11:28, , 1F
LSB 的 B 是 byte, lsb 的 b 才是 bit OuO
07/15 11:28, 1F

07/15 11:30, , 2F
但是還是要看上下文 也不一定是這樣 XD
07/15 11:30, 2F

07/15 11:31, , 3F
但是你的問題怪怪的 問這行程式碼 能幹嘛沒有意義
07/15 11:31, 3F

07/15 11:32, , 4F
這就是一個位元運算而已 能應用在你會需要它的地方
07/15 11:32, 4F

07/15 11:34, , 5F
這是網路看到的一個題目 可能要了解記憶體管理常式
07/15 11:34, 5F

07/15 11:34, , 6F
才想得出應用在哪吧@@"
07/15 11:34, 6F

07/15 11:40, , 7F
拿來做 bit flags/masks 吧?
07/15 11:40, 7F

07/15 11:45, , 8F
運用很多呀,寫driver讀取暫存器常要對某個field做設定
07/15 11:45, 8F

07/15 11:55, , 9F
恩 也常看到bit flag/mask設置沒錯
07/15 11:55, 9F

07/15 11:59, , 10F
可能我太執著於要找到跟記憶體管理常式的關係
07/15 11:59, 10F
※ 編輯: antoniee (36.231.147.208), 07/15/2017 12:16:57

07/15 12:19, , 11F
這裡的~1 結果會是幾位元?
07/15 12:19, 11F

07/15 13:42, , 12F
8位元暫存器清除最低位元?
07/15 13:42, 12F

07/16 20:14, , 13F
https://hackmd.io/s/B1wb8CyHb 出自這網址的Q3嗎?
07/16 20:14, 13F

07/16 21:17, , 14F
對阿....
07/16 21:17, 14F

07/16 23:25, , 15F
就是把bit0清掉 這樣寫不清楚
07/16 23:25, 15F

07/16 23:27, , 16F
一般都是 &=~ 0x01 這樣就應該懂了吧
07/16 23:27, 16F

07/16 23:29, , 17F
意思就是 不管bit0現在是1還是0 經過這行就變0
07/16 23:29, 17F
文章代碼(AID): #1PQOVgcH (C_and_CPP)
文章代碼(AID): #1PQOVgcH (C_and_CPP)