【发布时间】:2012-02-08 06:59:48
【问题描述】:
我正在查看 MS Access 中的链接数据。
“是/否”字段包含值 -1 表示是,0 表示否。有人可以解释为什么将这种违反直觉的值用于“是”吗? (显然应该是1和0)
我想一定有一个很好的理由,我想知道。
【问题讨论】:
-
布尔常量 True 的数值为 -1。这是因为布尔数据类型存储为 16 位有符号整数。在此构造中,-1 计算为 16 个二进制 1(布尔值 True),0 计算为 16 个 0(布尔值 False)。这在对 16 位有符号整数值 0 执行 Not 操作时很明显,这将返回整数值 -1,换句话说,True = Not False。当对整数的各个位(例如 And、Or、Xor 和 Not)执行逻辑运算时,此功能变得特别有用。 [7]这个True的定义也和BASIC一致……
-
@OlivierJacot-Descombes - 直接从维基百科剪切和粘贴!
-
@MartinSmith - 即便如此,它仍然完美地回答了这个问题
-
@MartinSmith:请注意,OP 指的是 MS Access 的
YESNO数据类型,而不是 VBA 固有的布尔类型。YESNO与布尔值不同,因为它也可以是空值(例如,使用外连接时),即三值逻辑,访问团队尚未定义。 -
我在 8 位家用微机时代第一次遇到 -1 和 0 作为真假,例如在BBC BASIC。我想这是我第一次看到使用 -1 和 0 的把戏,因为它们是按位相反的......