作者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/cn.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