编程爱好者 发表于 2013-8-1 23:26:04

关于逻辑按位与运算,求解释

例如说:我自己定义一个数值为11110000B,如果要把第6位设为0的话,进行按位与运算后结果是不是等于10110000,还是00001111,是光改变一位的数值还是全部要进行与运算才行?然后就是要什么理解按位与运算这个概念,很抽象的感觉。我是不是可以理解为and是一个数值的N位设为0而已,还有与运算要什么理解?

福禄娃娃 发表于 2013-8-1 23:52:31

RE: 关于逻辑按位与运算,求解释

既可以改变一位也可以改变多位,取决于你要改变哪些位。
与运算的规则是都为1的时候结果才为1
如果任意一个为0,结果为0

编程爱好者 发表于 2013-8-1 23:57:32

福禄娃娃 发表于 2013-8-1 23:52 static/image/common/back.gif
既可以改变一位也可以改变多位,取决于你要改变哪些位。
与运算的规则是都为1的时候结果才为1
如果任意一 ...

那or又要什么理解呢。 想了好久,一直很纠结。

Dardy 发表于 2013-8-2 01:44:35

编程爱好者 发表于 2013-8-1 23:57 static/image/common/back.gif
那or又要什么理解呢。 想了好久,一直很纠结。

and与
or   或

mov ax, 0011 1111 b
mov bx, 1111 1101 b;从左往右,从0到7数,这个0处在第6位
andax, bx   ;ax与bx,结果放在ax.ax=0011 1101,运算后第6位被置0,其它位保持不变。

参与运算的两个数要是一样长,都是8位,或都是16位。每一位都参与运算:
          0 0 1 1    1 1 1 1
and   1 1 1 1    1 1 0 1
----------------------------
结果   0 0 1 1    1 1 0 1
便于记忆:结果看上去同上下对应的每一位进行相乘的结果,如0*1=0,1*1=1


          0 1 1 0    0 0 0 0
or    1 0 1 0    0 0 0 0
----------------------------
结果   1 1 1 0    0 0 0 0

便于记忆:同上下对应的每一位进行相加的结果。如0+1=1, 1+1=2 (2理解成非0,不是0)

这些是逻辑运算,和算术运算(+-*/)一样,属于数学运算。
你怎么理解1+1=2 ?,这不好说,若说你有一个苹果,再给你一个,就可算出你有两个苹果。
你怎么理解1 and 0=0 ? ,不好说,若你说了一句真话,又说了一句假话,可算出你撒谎了。

小咒 发表于 2013-8-2 02:23:06

编程爱好者 发表于 2013-8-1 23:57 static/image/common/back.gif
那or又要什么理解呢。 想了好久,一直很纠结。

其实只用了两句话来记住and与or
and:1=1+1(两者为1结果才为1)其余运算结果都是0
or:0=0+0(两者为0结果才为0)其余运算结果都1
我觉得这是一个很简单并且简洁的一个说明方式

ssyss501 发表于 2013-8-2 09:43:12

与 都是1结果才为1
或 有一个是1 结果就是1
异或 相同为0 不同为1 多简单 有什么纠结的

az4121 发表于 2013-8-2 10:13:46

一根导线可以传送的稳定状态只有高、低电平;转化为代码“0”和“1”,每个0或1就是一个位(bit/比特)
计算机中所有的信息都是由二进制形式的位(bit/比特)表示
and按位清0
or按位置1

relaxpeng 发表于 2013-8-2 10:20:17

逻辑”与”操作指令AND(逻辑乘法)

    0*0=0
    0*1=0
    1*0=0
    1*1=1

281595933 发表于 2013-8-2 10:58:26

楼主~!我想你的这个问题我在论坛朋友那下了本书,里面很好的解释了“与”、“或”、“非”、“异或”这几种逻辑关系。我就引用书上面的截个图你看下吧~!



怡静 发表于 2013-8-2 12:02:52

说明白一点,你要让那个位运算,你就编写是那个位变化,它可以改变一个位,也可以全改,就看你怎么编。

编程爱好者 发表于 2013-8-2 16:43:38

解决问题了,谢谢大家!:hug:

machine1 发表于 2013-9-19 17:51:49

小咒 发表于 2013-8-2 02:23 static/image/common/back.gif
其实只用了两句话来记住and与or
and:1=1+1(两者为1结果才为1)其余运算结果都是0
or:0=0+0(两者为0结 ...

{:1_1:}我赞成这种方式计算
页: [1]
查看完整版本: 关于逻辑按位与运算,求解释