标题:怎么理解位逻辑与运算哦?晕了,看半天不懂
取消只看楼主
fyz520
Rank: 1
等 级:新手上路
帖 子:120
专家分:1
注 册:2010-1-27
结帖率:95.12%
已结贴  问题点数:10 回复次数:2 
怎么理解位逻辑与运算哦?晕了,看半天不懂
书上有一段话是这样的:

逐位求与操作经常驻用来屏蔽掉某些二进制位。例如,数字字符“6”的ASCLL代码值为0x36,高半字节的0x3╳是表示ASCLL码集合中数字字符的特征码,而低半字节0x6才代表该数字的值6,若将一个数字字符串如“62868”转换成其数值时,需从该数字字符串的每个数字字符中,即从它的ASCLL代码值中屏蔽掉高4个二进制位,取出该位数字的值,然后按十进制位依次拼装。那么屏蔽掉某数字字符高4个二进制位的方法是取屏蔽码0x0f,把该数字字符的ASCLL代码值和屏蔽码0x0f进行逐位与操作,即:0x36 & 0x0f = 0x06
                        



我在书上查的ASCLL表和这段话说的好像不太一样,6的ASCLL代码值八进制是006,十六进制是06,没有0x36的啊,也不知道从哪冒出的屏蔽码0x0f,这是啥意思?


哪位大侠能举个例子说明一下位逻辑与或非运算符的用法哈,小弟在此谢过了。。。。这一章有点难,看不懂。。。

比如这个
char x,y;
y=x | 0x04;
y的值是怎么求出来的
搜索更多相关主题的帖子: 运算 逻辑 
2010-01-28 15:22
fyz520
Rank: 1
等 级:新手上路
帖 子:120
专家分:1
注 册:2010-1-27
得分:0 
谢谢哦,大概意思懂了,怎么才能知道十六进制的0x04等于二进制00000100啊,这是ASCLL码值吗?有表查不
2010-01-28 17:11
fyz520
Rank: 1
等 级:新手上路
帖 子:120
专家分:1
注 册:2010-1-27
得分:0 
大侠就大侠,谢谢了哦,经你这么一说我懂了,我来分析一下最后一个例子:把一个 int 的符号位清零,因为符号位占存储空间的第一位,我们把第一位清零而其他位不变,按照位与的说法乘以1不变,乘以0变0,我们只要用它来和0111 1111做位与运算这样就达到目的了,而0111就是7,1111是F,所以是0x7f,而0x7f可以说一个操作码,只是用它来做int的符位清零运算工具,所以我们没必要管它的值是多少,是这样吗?大侠
2010-01-29 12:48



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-296655-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.163564 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved