[問題] 位元邏輯運算子 & 問題

看板C_and_CPP作者 (宸火)時間6年前 (2018/04/16 15:56), 6年前編輯推噓9(9029)
留言38則, 16人參與, 5年前最新討論串1/1
看code時發現 uint8_t data[9]; data[5] = val & 0xff 不懂為什麼要這麼做 0xff 不就等於 11111111 var和0xff 聯集& 做位元邏輯運算 還是var本身自己阿 請問有人可以提點 關鍵字 讓我知道原因嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.220.35.157 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1523865411.A.9C0.html

04/16 16:05, 6年前 , 1F
ooxx
04/16 16:05, 1F

04/16 16:06, 6年前 , 2F
oxff是什麼東東 都民國一百多年了還有人0 o混著用?
04/16 16:06, 2F

04/16 16:06, 6年前 , 3F
&跟|傻傻分不清楚
04/16 16:06, 3F

04/16 16:07, 6年前 , 4F
oxff 是什麼東西,變數嗎?
04/16 16:07, 4F

04/16 16:08, 6年前 , 5F
不是30年前那些打字習慣超爛的古董才會嗎
04/16 16:08, 5F
抱歉 是我搞錯0跟o ※ 編輯: x246libra (61.220.35.157), 04/16/2018 16:10:24

04/16 16:12, 6年前 , 6F
好改正了不錯
04/16 16:12, 6F

04/16 16:12, 6年前 , 7F
所以 這麼作 有什麼功能嗎?
04/16 16:12, 7F

04/16 16:12, 6年前 , 8F
下一個問題 你確定val跟data[5]一樣寬嗎
04/16 16:12, 8F
long val; 一樣的大小 ※ 編輯: x246libra (61.220.35.157), 04/16/2018 16:23:00

04/16 16:23, 6年前 , 9F
這樣就是保留最後8bits
04/16 16:23, 9F

04/16 16:25, 6年前 , 10F
long 跟 uint8 一樣大小我也是醉了
04/16 16:25, 10F

04/16 16:26, 6年前 , 11F
就是把 val 的高位剪掉清成 0,只留最低 byte
04/16 16:26, 11F

04/16 16:35, 6年前 , 12F
哪個平台的long跟uint8_t一樣大?
04/16 16:35, 12F

04/16 16:43, 6年前 , 13F
typedef uint8_t long; 自己定XD
04/16 16:43, 13F
有查過 https://openhome.cc/Gossip/CGossip/Datatype.html int 與 long 為 8 位元組 有錯請跟我說 謝謝 ※ 編輯: x246libra (61.220.35.157), 04/16/2018 16:56:57

04/16 16:55, 6年前 , 14F
val & 0xff ← val % 256
04/16 16:55, 14F

04/16 17:05, 6年前 , 15F
他sizeof(int)的輸出是4捏,而且位元組跟位元是不一樣
04/16 17:05, 15F

04/16 17:05, 6年前 , 16F
的東西
04/16 17:05, 16F

04/16 17:06, 6年前 , 17F
uint8_t是8bits,不是8byte
04/16 17:06, 17F

04/16 17:16, 6年前 , 18F
XD long跟uint8_t一樣大 笑死 提名本年度最好笑
04/16 17:16, 18F
原來uint8_t 是8bit 謝謝指正 那long 跟 uint8_t不同大小 目的是 val 的高位剪掉清成 0,只留最低 byte 這樣的功能? ※ 編輯: x246libra (61.220.35.157), 04/16/2018 17:19:46

04/16 17:31, 6年前 , 19F
笑到肚子好痛
04/16 17:31, 19F

04/16 17:31, 6年前 , 20F
既然查到網頁,可以照著上面的方法跑一次啊
04/16 17:31, 20F

04/16 17:32, 6年前 , 21F
不同平台的結果會不一樣喔!
04/16 17:32, 21F

04/16 18:11, 6年前 , 22F
把超過的部份剪掉 不過沒錯 不同平台結果可能有差異
04/16 18:11, 22F

04/16 18:32, 6年前 , 23F
不過再怎麼有差異也沒聽過long是1或2 bytes 的就是了
04/16 18:32, 23F

04/16 18:34, 6年前 , 24F
因為那違反標準 標準規定sizeof(long) >= 32bits
04/16 18:34, 24F

04/16 20:14, 6年前 , 25F
uint32表示 哇靠比我還長
04/16 20:14, 25F

04/16 21:34, 6年前 , 26F
mask
04/16 21:34, 26F

04/17 00:03, 6年前 , 27F
請問樓上 mask是什麼意思 要用什麼關鍵字查詢相關資料
04/17 00:03, 27F

04/17 00:13, 6年前 , 28F
"bit mask"用這個google有一些網頁可以看
04/17 00:13, 28F

04/17 02:02, 6年前 , 29F
遮罩
04/17 02:02, 29F

04/17 09:31, 6年前 , 30F
感謝樓上們解釋
04/17 09:31, 30F

04/17 11:17, 6年前 , 31F
作Mask
04/17 11:17, 31F

04/17 11:41, 6年前 , 32F
推 chuegou: uint32表示 哇靠比我還長 XDDDDD
04/17 11:41, 32F

04/17 12:13, 6年前 , 33F
單純當遮罩用,另外不同平台實作位元會有差異,看規格書
04/17 12:13, 33F

04/17 12:13, 6年前 , 34F
typedef unsigned char uint8_t;
04/17 12:13, 34F

04/17 12:14, 6年前 , 35F
typedef unsigned short uint16_t;
04/17 12:14, 35F

04/17 12:14, 6年前 , 36F
typedef unsigned long uint32_t;
04/17 12:14, 36F

10/01 11:01, 5年前 , 37F
回來翻到以前的發問 怎麼問這麼笨的問題...
10/01 11:01, 37F

10/01 11:01, 5年前 , 38F
uint8 居然搞錯意思了QQ
10/01 11:01, 38F
文章代碼(AID): #1Qr5T3d0 (C_and_CPP)