pascal or,and,xor...... 运算

作者&投稿:仇刚 (若有异议请与网页底部的电邮联系)
求PASCAL中or、xor、and的运算过程。~

1】or
or在pascal中有两种运算,第一为逻辑运算, or ,两个表达式的值都为真或假,则取相同的值,若有一个为真,则为真;第二位二进制运算,(数A) or (数B),先把两数化为二进制数,并且右对齐,每一位进行or运算,都为0或都为1,则取相同的值,一个为1,则值也为1。
举例:
(110)=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。同样也可以进行逻辑运算, xor ,两个逻辑表达式的值都为真或假,则为假;两个一真一假,则为真。
举例:
(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中也有两种运算,第一为逻辑运算, and ,两个表达式都为真,则为真;一真一假或都为假,则为假。第二位二进制运算,也是先把两数进行转化二进制,并右对齐,每一位进行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;

给你个全的吧,Pascal中运算符的优先级由高到低依次如下:
第1级:@, not
第2级:*, /, div, mod, and, shl, shr, as
第3级:+, -, or, xor
第4级:=, , , =, in, is
也就是说,not>and>or=xor,楼主说得对...

-1的二进制是1000001
5的二进制是0000101
(开头是1为负,是0为正)

1000001 and
0000101 (同为1则为1)
0000001 结果
转为十进制为1,即 -1 and 5=1

1000001 or
0000101 (一列中有一个为1则为1)
1000101 结果
转为十进制为-5,即 -1 or 5=-5

not就是求二进制数的反码,如 not 1=0 或 not 0=1

xor就是当一列数字不同时为1,如
1 xor
0 =
1

0 xor
1 =
1

0 xor
0 =
0

1 xor
1 =
0

楼下的,抄袭可是不好的!

-1的二进制是1000001
5的二进制是0000101
(开头是1为负,是0为正)

1000001 and
0000101 (同为1则为1)
0000001 结果
转为十进制为1,即 -1 and 5=1

1000001 or
0000101 (一列中有一个为1则为1)
1000101 结果
转为十进制为-5,即 -1 or 5=-5

xor就是当一列数字不同时为1,如
1 xor 0 =1
0 xor 1 =1
0 xor 0 =0
1 xor 1 =0

这实际上是位运算,将两数换算成二进制数后,个位对齐进行逐个的比较,例如:23 xor 5
10111
00101(高位不足补0)
‘xor':如果某位的两数是1个'0'和1个‘1’则结果为‘1’ 否则为‘0’
所以 23 xor 5=10010=18
‘or':如果两数中有‘1’则结果为‘1’一个‘1’也没有为‘0’
所以 23 or 5=10111=23
‘and':两数都是‘1’则结果为‘1’否则为‘0’
所以 23 and 5=00101=5
纯手写,给点辛苦费吧~~~~

转二进制后:
and:同真则真
or:有真就真
not:你真我假
xor:不同则真
(真为1,假为0)
然后转回十进制