VB的逻辑运算and or xor怎么算的?

xabcdc 2004-01-08 11:17:24
AND OR XOR运算是怎么实现的?
200 and 127==72
偶试了很多数,结果好像没什么规律?
那个72是怎么来的?
...全文
802 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xabcdc 2004-01-08
  • 打赏
  • 举报
回复
127=(00000000 And &H7F&) * &H2 + (00000000 And &H7F&) * &H4 + (00000000 And &H7F&) * &H80 + (01111111 And &H7F&)

怎么反过来得到00000000 00000000 0000000 01111111
3661512 2004-01-08
  • 打赏
  • 举报
回复
先转换成2进制,再进行运算,例如:
200=11001000
127=01111111

11001000
AND
01111111
-------------
01001000 =72
firechun 2004-01-08
  • 打赏
  • 举报
回复
和C的位运算是一样的。
200=&HC8=11001000B
127=&H7F=01111111B
位运算: 01001000B=&H48=72
xabcdc 2004-01-08
  • 打赏
  • 举报
回复
说错了,应该是位运算!
xabcdc 2004-01-08
  • 打赏
  • 举报
回复
明白,谢了~
脆皮大雪糕 2004-01-08
  • 打赏
  • 举报
回复
http://www.qhnu.edu.cn/cbe/ncre/window/kechengxuexi/1.5.htm
http://www.k12.com.cn/webpage/vbscript/239.htm
脆皮大雪糕 2004-01-08
  • 打赏
  • 举报
回复
哎,首先你要知道十进制、二进制、十六进制的互相转换。
然后你要知道在二进制状态下
1 and 1 = 1,1 and 0 = 0,0 and 1 = 0,0 and 0 = 0

下面来解释你的那个式子
127=(00000000 And &H7F&) * &H2 + (00000000 And &H7F&) * &H4 + (00000000 And &H7F&) * &H80 + (01111111 And &H7F&)

首先把十六进制的&H7F转换成二进制: 01111111
然后我们来计算(00000000 And &H7F&) :
00000000
and 01111111
---------------
00000000 (这是根据我上面给你的那几个公式对二进制数进行逐位and运算)

那么二进制的00000000就是十进制的0,十六进制的&H2就是十进制的2
(00000000 And &H7F&) * &H2 = 00000000*&H2 = 0 * 2 = 0 = 00000000(二进制)
同理:

(00000000 And &H7F&) * &H4 = 0 * 4 = 0 = 00000000(二进制)
(00000000 And &H7F&) * &H80= 0 * 128 = 0 = 00000000(二进制)

最后我们来计算(01111111 And &H7F)
01111111
and 01111111
---------------
01111111 (这是根据我上面给你的那几个公式对二进制数进行逐位and运算)
所以最终你的那个式子就是
00000000 + 00000000 + 00000000 + 01111111 = 01111111 =127(十进制)

如果这下还没明白过来就没有办法了
firechun 2004-01-08
  • 打赏
  • 举报
回复
我不知道你要问什么?本来很简单的问题,怎么被你越说越不明白了。
A and B=C 但是B And C<>A

A xor B=C 而且 A xor C=B , B xor C=A
xabcdc 2004-01-08
  • 打赏
  • 举报
回复
回复人: firechun(天火) ( ) 信誉:97 2004-01-08 13:02:00 得分:0
我的意思是怎么算出00000000 00000000 00000000 01111111这几个数?
xabcdc 2004-01-08
  • 打赏
  • 举报
回复
11011101
and
01011011
=
01011001

怎么反过来从01011011 01011001 得到 11011101
firechun 2004-01-08
  • 打赏
  • 举报
回复
帮你解析一下:
(00000000 And &H7F&) * &H2 =0
(00000000 And &H7F&) * &H=0
(00000000 And &H7F&) * &H80 =0
以上三个肯定等于0,0和任何数AND运算都等于0
(01111111 And &H7F&)=&H7F=127
01111111就是&H7F的二进制值,任何一个数和它本身进行AND运算都等于这个数。&H7F是127的16进制值,所以你的等式是成立的。
至于反过来得到00000000 00000000 0000000 01111111,这也没错啊,结果仍然是127。只不过是二进制的方式表现出来的。

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧