作者x246libra (宸火)
看板C_and_CPP
標題[問題] 位元邏輯運算子 & 問題
時間Mon Apr 16 15:56:49 2018
看code時發現
uint8_t data[9];
data[5] = val & 0xff
不懂為什麼要這麼做
0xff 不就等於 11111111
var和0xff 聯集& 做位元邏輯運算 還是var本身自己阿
請問有人可以提點 關鍵字 讓我知道原因嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.220.35.157
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1523865411.A.9C0.html
1F:→ shadow0326: ooxx 04/16 16:05
2F:→ MOONRAKER: oxff是什麼東東 都民國一百多年了還有人0 o混著用? 04/16 16:06
3F:→ taies: &跟|傻傻分不清楚 04/16 16:06
4F:→ Lipraxde: oxff 是什麼東西,變數嗎? 04/16 16:07
5F:→ MOONRAKER: 不是30年前那些打字習慣超爛的古董才會嗎 04/16 16:08
抱歉 是我搞錯0跟o
※ 編輯: x246libra (61.220.35.157), 04/16/2018 16:10:24
6F:→ MOONRAKER: 好改正了不錯 04/16 16:12
7F:→ x246libra: 所以 這麼作 有什麼功能嗎? 04/16 16:12
8F:→ MOONRAKER: 下一個問題 你確定val跟data[5]一樣寬嗎 04/16 16:12
long val;
一樣的大小
※ 編輯: x246libra (61.220.35.157), 04/16/2018 16:23:00
9F:推 jerryh001: 這樣就是保留最後8bits 04/16 16:23
10F:→ Schottky: long 跟 uint8 一樣大小我也是醉了 04/16 16:25
11F:→ Schottky: 就是把 val 的高位剪掉清成 0,只留最低 byte 04/16 16:26
12F:→ james732: 哪個平台的long跟uint8_t一樣大? 04/16 16:35
13F:→ Lipraxde: typedef uint8_t long; 自己定XD 04/16 16:43
有查過
https://openhome.cc/Gossip/CGossip/Datatype.html
int 與 long 為 8 位元組
有錯請跟我說 謝謝
※ 編輯: x246libra (61.220.35.157), 04/16/2018 16:56:57
14F:推 cutekid: val & 0xff ← val % 256 04/16 16:55
15F:→ Lipraxde: 他sizeof(int)的輸出是4捏,而且位元組跟位元是不一樣 04/16 17:05
16F:→ Lipraxde: 的東西 04/16 17:05
17F:→ tjjh89017: uint8_t是8bits,不是8byte 04/16 17:06
18F:→ MOONRAKER: XD long跟uint8_t一樣大 笑死 提名本年度最好笑 04/16 17:16
原來uint8_t 是8bit 謝謝指正
那long 跟 uint8_t不同大小
目的是
val 的高位剪掉清成 0,只留最低 byte 這樣的功能?
※ 編輯: x246libra (61.220.35.157), 04/16/2018 17:19:46
19F:→ Schottky: 笑到肚子好痛 04/16 17:31
20F:→ Schottky: 既然查到網頁,可以照著上面的方法跑一次啊 04/16 17:31
21F:→ Schottky: 不同平台的結果會不一樣喔! 04/16 17:32
22F:→ MOONRAKER: 把超過的部份剪掉 不過沒錯 不同平台結果可能有差異 04/16 18:11
23F:→ Schottky: 不過再怎麼有差異也沒聽過long是1或2 bytes 的就是了 04/16 18:32
24F:推 shadow0326: 因為那違反標準 標準規定sizeof(long) >= 32bits 04/16 18:34
25F:推 chuegou: uint32表示 哇靠比我還長 04/16 20:14
26F:推 TitanEric: mask 04/16 21:34
27F:→ x246libra: 請問樓上 mask是什麼意思 要用什麼關鍵字查詢相關資料 04/17 00:03
28F:→ james732: "bit mask"用這個google有一些網頁可以看 04/17 00:13
29F:推 Bencrie: 遮罩 04/17 02:02
30F:推 TitanEric: 感謝樓上們解釋 04/17 09:31
31F:推 Leadgen: 作Mask 04/17 11:17
32F:推 KanzakiHAria: 推 chuegou: uint32表示 哇靠比我還長 XDDDDD 04/17 11:41
33F:→ kikiqqp: 單純當遮罩用,另外不同平台實作位元會有差異,看規格書 04/17 12:13
34F:→ kikiqqp: typedef unsigned char uint8_t; 04/17 12:13
35F:→ kikiqqp: typedef unsigned short uint16_t; 04/17 12:14
36F:→ kikiqqp: typedef unsigned long uint32_t; 04/17 12:14
37F:→ x246libra: 回來翻到以前的發問 怎麼問這麼笨的問題... 10/01 11:01
38F:→ x246libra: uint8 居然搞錯意思了QQ 10/01 11:01