ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2681|回复: 7

[求助] 逻辑运算符not+数字是怎么定义的?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-7-23 17:30 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
a = 6
b = 5
Debug.Print (Not a)
Debug.Print (Not b)
返回的值为什么是反号减1?

TA的精华主题

TA的得分主题

发表于 2018-7-23 17:36 | 显示全部楼层
你认为应该是多少?
你验证一下,打开电脑中的计算器程序,切换成程序员模式,点一下6,然后再点一下Not,看一下计算器计算出来的是不是也是-7?



如果和你预想的结果不一样,那么肯定是你把Not理解错了。
如果你想知道Not(6)=(-7)的原理,那么你只要看下反码和补码两章就好了(内容不多,加起来也就两页)。

TA的精华主题

TA的得分主题

发表于 2018-7-23 17:37 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-7-23 17:45 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
joforn 发表于 2018-7-23 17:37
另外,Not(6)中的Not不是逻辑运算,是位运算。

我一直都忽略了这个位运算问题,还老是去找资料,原来是这么操作,学习了,谢谢

TA的精华主题

TA的得分主题

发表于 2018-7-23 17:55 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
microyip 发表于 2018-7-23 17:45
我一直都忽略了这个位运算问题,还老是去找资料,原来是这么操作,学习了,谢谢

Not就是取反位运算,在VB中True=(-1)(双字节),False=0。
位运算Not(-1)=0,刚好与逻辑运算中的Not(True)=False对应。

另外几个(OR、XOR、AND)也是一样,刚刚好与逻辑运算对应,所以VB就直接忽略了二者的区别,只用了同一套运算符来运算,不像C,逻辑和位运算是两套运算符。

TA的精华主题

TA的得分主题

发表于 2018-7-23 18:12 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-7-23 18:18 | 显示全部楼层
microyip 发表于 2018-7-23 17:45
我一直都忽略了这个位运算问题,还老是去找资料,原来是这么操作,学习了,谢谢

交换两个整数,装逼代码如下:
  1. Sub test()
  2.     Dim a As Long, b As Long
  3.     a = 5
  4.     b = 34
  5.     a = a Xor b
  6.     b = b Xor a
  7.     a = a Xor b
  8.     MsgBox a
  9. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2018-7-23 21:31 | 显示全部楼层
duquancai 发表于 2018-7-23 18:12
可惜 VBA中没有 左移>

左移和右移其实也有。但只是类似的计算。因为左移和右移其实就是为了用来计算乘除法的。左移一位就是*2,右移一位就是\2
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-10 21:45 , Processed in 0.028666 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表