1.3 数据的逻辑运算
逻辑运算又称布尔运算,布尔是英国的数学家,在1847年发明了处理二值之间关系的逻辑数学计算法,他用等式表示判断,把推理看做等式的变换。这种变换的有效性不依赖人们对符号的解释,只依赖于符号的组合规律。20世纪30年代,逻辑代数在电路系统上获得应用,随后,由于电子技术与计算机的发展,出现各种复杂的大系统,它们的变换规律也遵守布尔所揭示的规律。
逻辑运算用来判断一件事情是“对”的还是“错”的,或者说是“真”还是“假”,判断的结果是二值的,即没有“可能是”或者“可能不是”。这个“可能”的用法是一个模糊概念,在计算机里面进行的是二进制运算,逻辑判断的结果只有两个值,称这两个值为“逻辑值”,用数的符号来表示就是“1”和“0”。其中“1”表示该逻辑运算的结果是“真”的,如果一个逻辑运算式的结果为“0”,那么这个逻辑运算式表达的内容为“假”。
计算机的逻辑运算的算术运算的主要区别:逻辑运算是按位进行的,位与位之间不像加减运算那样有进位或借位的联系。
逻辑运算主要包括三种基本运算:逻辑加法(又称“或”运算)、逻辑乘法(又称“与”运算)和逻辑否定(又称“非”运算)。此外,还有一种“异或”运算也很有用,在RAID中就大量使用这种运算作为校验算法。
1.3.1 逻辑或
逻辑“或”运算也称为逻辑加运算,运算符有“+”、“∨”、“OR”等几种。
“或”逻辑是指当输入变量中有一个满足条件(例如,为1有效)时,输出就有效(例如,为1)。只有当所有输入变量均不满足条件(例如,为0)时,输出才无效(为0)。
也就是说,在给定的逻辑变量中,只要有一个为1,其逻辑加的结果为1;逻辑变量都为0则逻辑加为0。其运算规则如下:
0+0=0,0∨0=0
0+1=1,0∨1=1
1+0=1,1∨0=1
1+1=1,1∨1=1
例如,x=10100001、y=10011011,求x∨y。运算如下:
即 x∨y=10111011
1.3.2 逻辑与
逻辑“与”运算又称为逻辑乘运算,通常用符号“×”或“∧”或“· ”来表示。
“与”逻辑是指当所有输入都同时满足条件(例如,都为1)时,输出才有效(例如,为1);否则输出无效(为0)。
也就是说,只有当参与运算的逻辑变量都同时取值为1时,其逻辑乘积才等于1。其运算规则如下:
0×0=0,0∧0=0,0·0=0
0×1=0,0∧1=0,0·1=0
1×0=0,1∧0=0,1·0=0
1×1=1,1∧1=1,1·1=1
例如,x=10111001、y=11110011,求x∧y。
运算如下:
即x∧y=10110001。
1.3.3 逻辑非
逻辑“非”运算也称为逻辑反运算,运算符为在变量上画一条横线。
“非”逻辑是指当输入变量中为1时,输出为0;输入为0时,输出为1。也就是说,0的非为1,1的非为0。
例如,A=10110101,求。运算如下:
即 =01001010。
1.3.4 逻辑异或
异或运算通常用符号“⊕”表示,其运算规则为:
0⊕0=0
0⊕1=1
1⊕0=1
1⊕1=0
这种逻辑运算在RAID中是一种很重要的算法,需要熟练掌握。
例如,x=10101011、y=11001100,求x⊕y。
运算如下:
即x⊕y=01100111。