首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >(而不是1)由于某种原因而评估为-2。

(而不是1)由于某种原因而评估为-2。
EN

Stack Overflow用户
提问于 2019-03-07 17:14:24
回答 3查看 68关注 0票数 3

为什么(而不是1)评估as -2?我希望它能被计算为0。

EN

Stack Overflow用户

发布于 2019-03-07 17:40:58

1不是True的整数表示,-1是。

代码语言:javascript
运行
复制
Debug.Print CInt(True) 'prints -1
Debug.Print CInt(False) 'prints 0

布尔运算符(NotAndOrXOr)在操作数为布尔值时表现为“逻辑运算符”。当他们不是,他们表现为“位运算符”,但事实是,他们总是按位。

整数值1转换为布尔值True,因为True被定义为Not False,这意味着任何非零值都是布尔True。但是,只有在将-1用于True时才会得到正确/预期的逻辑行为。

Integer由16位表示,所以1是这样的:

代码语言:javascript
运行
复制
0000 0000 0000 0001

这使得Not 1这样:

代码语言:javascript
运行
复制
1111 1111 1111 1110

符号位是开的,所以值是负值-修剪不重要的数字,然后得到:

代码语言:javascript
运行
复制
10

这是2的二进制表示。因此,Not 1-2

相反,-1将是:

代码语言:javascript
运行
复制
1111 1111 1111 1111

因此,Not -1是:

代码语言:javascript
运行
复制
0000 0000 0000 0000
票数 5
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55049440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档