求PASCAL中or、xor、and的运算过程。

麻烦讲得详细些.
2024-11-23 00:50:53
推荐回答(4个)
回答1:

=== 1. and运算 ===
and运算通常用于二进制取位操作,例如一个数 and 1的结果就是取二进制的最末位。这可以用来判断一个整数的奇偶,二进制的最末位为0表示该数为偶数,最末位为1表示该数为奇数.
=== 2. or运算 ===
or运算通常用于二进制特定位上的无条件赋值,例如一个数or 1的结果就是把二进制最末位强行变成1。如果需要把二进制最末位变成0,对这个数or 1之后再减一就可以了,其实际意义就是把这个数强行变成最接近的偶数。
=== 3. xor运算 ===
xor运算通常用于对二进制的特定一位进行取反操作,因为异或可以这样定义:0和1异或0都不变,异或1则取反。
xor运算的逆运算是它本身,也就是说两次异或同一个数最后结果不变,即(a xor b) xor b = a。

回答2:

将两个数都换成二进制以后,末尾对齐,前面位数不一样的用0补齐。
and:1 and 0 是0
0 and 0 是0
1 and 1 是1
0 and 1 是0
or:1 or 0是1
0 or 0是0
1 or 1是1
0 or 1是1
xor:1 xor 0是1
0 xor 0是0
0 xor 1是1
1 xor 1是0
算出二进制数以后,再换成十进制

回答3:

A and B
把A、B转化为二进制,末尾对齐,再两两进行运算,结果再转化为十进制

回答4:

1】or
or在pascal中有两种运算,第一为逻辑运算,<逻辑表达式A> or <逻辑表达式B>,两个表达式的值都为真或假,则取相同的值,若有一个为真,则为真;第二位二进制运算,(数A) or (数B),先把两数化为二进制数,并且右对齐,每一位进行or运算,都为0或都为1,则取相同的值,一个为1,则值也为1。
举例:
(1<10)or(1>10)=true;
(1<10)or(2<10)=true;
(1>10)or(2>10)=false;
5 or 7=101 or 111=111=7;
4 or 7=100 or 111=111=7;
2】xor
xor是异或的反运算,是把两数化成二进制后,相同为0,不同为1。同样也可以进行逻辑运算,<逻辑表达式A> xor <逻辑表达式B>,两个逻辑表达式的值都为真或假,则为假;两个一真一假,则为真。
举例:
(1<10)xor(1<11)=false;
(1>10)xor(1>11)=false;
(1>10)xor(1<11)=true;
5 xor 7=101 xor 111=10=2;
7 xor 7=111 xor 111=0;
3】and
and在pascal中也有两种运算,第一为逻辑运算,<逻辑表达式A> and <逻辑表达式B>,两个表达式都为真,则为真;一真一假或都为假,则为假。第二位二进制运算,也是先把两数进行转化二进制,并右对齐,每一位进行and运算。都为1则为1,一个为1一个为0或都为0则为0。
举例:
(1<10)and(1<11)=true;
(1>10)and(1<11)=false;
(1>10)and(1>11)=false;
5 and 7=101 and 111=101=5;
7 and 7=111 and 111=111=7;