C语言~~菜鸟请教

来源:百度知道 编辑:UC知道 时间:2024/06/18 17:57:33
本人是新手

自学到使用按位运算符,书上说,以下语句定义了掩码:
unsigned int male=0x1;
unsigned int french=0x2;
unsigned int germen=0x4;
unsigned int italian=0x8;
unsigned int payBracket=0x10;
然后定义一个unsigned int类型的personal_data来储存五项信息
如果第一位是1,表示男性,0表示女性……
然后if(personal_data & male),书说,如果personal_data 对应掩码male的位是1,表达式(personal_data & male)的值就不是0(true),否则就是0

怎么上面的看不懂,哪位高手给解释以下?

高低位的存储跟操作系统有关系。
不考虑系统因素的话,就正常16位系统来说
0x1的二进制为01存在内存中就是00000000 00000001(后面只写8位前8位为0省略)也就是
0x1=00000001;
0x2=00000010;
0x4=00000100;
.....
这样就每位都有一个1其余都是0
如果假设personal_data为5按位存储就是00000101;
这样personal_data的第一位就是1与male按位与之后还是1所以值为真也就是男性
同理第3位是1与germen按位与就得出是德国人所以personal_data 为5时就代表是德国男人如果为4时就是德国女人,其他都同理。

学习

期待