excel - Excel VBA 中的基本布尔问题:输出 -1
问题描述
真 * 真 * 真 = -1
当我乘以等于 true 的奇数个布尔变量时,结果为 -1。为什么是这样?
这不是:真*真*真
与此相同:
1 * 1 * 1?
为什么 vba 返回 -1,而 Excel 在评估时返回 1?
我一直在使用这样的编写代码
如果 Asb(TRUE * TRUE * TRUE) =1 那么...
或这个
如果 TRUE * TRUE * TRUE <> 0 则 ...
我想了解为什么代码会以这种方式运行。提前感谢您的解释。
解决方案
你必须坚持 -1 和 0 来判断真假。要确认您的语言用于 true,只需将零分配给变量 (false),不必是布尔值,然后打印 not(variable) 以确定什么是 true。除非原始值为-1,否则这不起作用。按位非运算符反转所有位,-1 是一个两位数,其中所有位都被设置,零所有位都被清除。如果您为变量分配任何其他非零数字,则在转换为布尔值时,使用按位 not 仍将返回 true。
二进制中的一个是十五个零和一个一。翻转所有这些位,您会得到 15 个位,然后是一个零,这是一个负值,因为第一位表示负数,但它不会是负数。再次翻转所有位将其返回到其原始值 - 1。
如果不清楚,请告诉我。
推荐阅读
- html - 引导文本中的文本-井不会居中
- java - Java 和 Xerces:找不到属性 XMLConstants.ACCESS_EXTERNAL_DTD
- javascript - 使用 jquery 中的每个循环的 Next 和 Prev 按钮功能
- c - C 和 MATLAB:在 C 中创建空数组调用 Matlab 函数来填充它以错误结尾
- c++ - 如何在 C++ DLL 项目中使用第 3 方 DLL?
- cloud-foundry - 计划重启 Pivotal Cloud Foundry 上的应用程序
- gulp - 如何创建全局模式以访问所有子文件夹及其自己的文件夹?
- amazon-web-services - 如何在 aws 宕机时创建场景
- c# - Assembly.LoadFrom 类型加载不一样
- yocto - bitbake do_image 依赖项未缓存