版权归原作者所有,如有侵权,请联系我们

[科普中国]-二进制布尔运算

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

基本概念布尔运算简介

乔治·布尔(George Boole,1815.11.2~1864),用数学方法研究逻辑问题,成功地建立了逻辑演算,出版了《逻辑的数学分析》。他用等式表示判断,把推理看作等式的变换。这种变换的有效性不依赖人们对符号的解释,只依赖于符号的组合规律 。这一逻辑理论人们常称它为布尔代数。20世纪30年代,逻辑代数在电路系统上获得应用,随后,由于电子技术与计算机的发展,出现各种复杂的大系统,它们的变换规律也遵守布尔所揭示的规律。

布尔运算是数字符号化的逻辑推演法,包括联合、相交、相减。在图形处理操作中引用了这种逻辑运算方法以使简单的基本图形组合产生新的形体,并由二维布尔运算发展到三维图形的布尔运算。

二进制布尔运算二进制数的布尔运算有“与”、“或”、“非”和“异或”4种,二进制布尔运算在计算机编程中有广泛的应用。

运算规则布尔运算是一种逻辑运算,逻辑运算是指对因果关系进行分析的一种运算。逻辑运算的结果并不表示数值大小,而是表示一种逻辑概念,若成立用真或1表示,若不成立用假或0表示。

二进制数的布尔运算有“与”、“或”、“非”和“异或”4种1。

“与”运算(AND)“与”运算又称逻辑乘,用符号“×”或“∧”来表示。运算规则如下:

0∧0 = 0

0∧1 = 0

1∧0 = 0

1∧1 = 1

即当两个参与运算的数的对应码位中有一个数为0,则运算结果为0,只有两码位对应的数都为1结果才为1。这与二进制数乘法运算是一样的。

“或”运算(OR)“或”运算又称逻辑加,用符号“+”或“∨”表示。运算规则如下:

0∨0 = 0

0∨1 = 1

1∨0 = 1

1∨1 = 1

即当两个参与运算数的相应码位只要有一个数为1,则运算结果为1,只有两码位对应的数均为0,结果才为0。

“非”运算(NOT)“非”运算实现逻辑否定,即进行求反运算,用符号“—”表示。“非”运算规则:

0 = 1

1 = 0

注意“非”运算只是针对一个数所进行的“运算”,这与前面的“与”和“或”运算不一样,它的实质意义就是取反。如“10111101”进行“非”运算后就得到“01000010”,对比相应位即可验证以上运算规则了。

“异或”运算(XOR)“异或”运算用符号“⊕ ”来表示。其运算规则如下:

0⊕0 = 0

0⊕1 = 1

1⊕0 = 1

1⊕1 = 0

即当两个参与运算的数取值相异时,运算结果为1,否则为0。

运算符及应用二进制布尔运算符:与(&),或(|),异或(^),当其操作数是布尔值时,它们就是逻辑运算符。对于运算符两边的操作数不管真假与否,都会先计算出来结果后再进行布尔逻辑运算;当其操作数是整数时,它们就是位运算符。

“与”运算符与运算符用符号“&”表示,其使用规律如下:

两个操作数中位都为1,结果才为1,否则结果为0,例如下面的程序段。
public class data13
{
public static void main(String[] args)
{
int a=129;
int b=128;
System.out.println("a 和b 与的结果是:"+(a&b));
}
}
运行结果:
a 和b 与的结果是:128

“a”的值是129,转换成二进制就是10000001,而“b”的值是128,转换成二进制就是10000000。根据与运算符的运算规律,只有两个位都是1,结果才是1,可以知道结果就是10000000,即128。

“或”运算符或运算符用符号“|”表示,其运算规律如下:

两个位只要有一个为1,那么结果就是1,否则就为0,下面看一个简单的例子。
public class data14
{
public static void main(String[] args)
{
int a=129;
int b=128;
System.out.println("a 和b 或的结果是:"+(a|b));
}
}
运行结果
a 和b 或的结果是:129

a 的值是129,转换成二进制就是10000001,而b 的值是128,转换成二进制就是10000000,根据或运算符的运算规律,只有两个位有一个是1,结果才是1,可以知道结果就是10000001,即129。

“非”运算符非运算符用符号“~”表示,其运算规律如下:

如果位为0,结果是1,如果位为1,结果是0,下面看一个简单例子。
public class data15
{
public static void main(String[] args)
{
int a=2;
System.out.println("a 非的结果是:"+(~a));
}
}

“异或”运算符异或运算符是用符号“^”表示的,其运算规律是:

两个操作数的位中,相同则结果为0,不同则结果为1。下面看一个简单的例子。

public class data16
{
public static void main(String[] args)
{
int a=15;
int b=2;
System.out.println("a 与 b 异或的结果是:"+(a^b));
}
}
运行结果
a 与 b 异或的结果是:13

a 的值是15,转换成二进制为1111,而b 的值是2,转换成二进制为0010,根据异或的运算规律,可以得出其结果为1101 即13。

二进制布尔运算与条件布尔运算二进制布尔运算符:与(&),或(|),异或(^),当其操作数是布尔值时,它们就是逻辑运算符。对于运算符两边的操作数不管真假与否,都会先计算出来结果后再进行布尔逻辑运算;当其操作数是整数时,它们就是位运算符。

条件布尔运算符:条件与(&&),条件或(||),条件非(!)运算符,只能对布尔值进行计算,并且从左到右,如果有一个操作数为真,就不再计算它右边的操作数,直接得出计算结果。