为什么bool有时被称为" flags"?它只是一个比喻还是背后有一些历史原因?
答案 0 :(得分:6)
标志是一种传达信息的古老方式。如果我们忽略将旗帜降低到半旗,则只有两个状态 - 提升或不提升。例如,考虑一面白旗 - 提高它意味着放弃。不提高它,默认状态,意味着你不投降。
布尔变量(如标志)只有两种状态 - true
和false
。
答案 1 :(得分:4)
Flag可以用作名词和动词:标志可以表示注释,标记,发出信号(也许这是通过使用航海标志得出的?)
早在(但可能不是第一次)在计算机历史中使用术语旗帜可以在1959年IBM 1620中找到(我的重点):
存储器同时被访问两个十进制数字(偶数 - 奇数 数字数字的数字对或文本的一个字母数字字符 数据)。每个十进制数字是6位,由奇数奇偶校验组成 位,标志位,以及4位BCD位 格式如下:
C F 8 4 2 1
Flag位有几种用途:
- 在最低有效数字中,它设置为表示负数(带符号幅度)。
- 设置为标记数字(字标)的最高位数。
- 在5位地址的最低位数字中,它被设置为间接寻址(1620 I上的选项,1620上的标准 II)。可以使用多级间接(你甚至可以使用 机器在无限间接寻址循环中)。 在5位地址的中间3位数字(在1620 II上),它们被设置为选择7个索引寄存器中的一个。
因此,用于标记或指示某些内容的位被称为标志位。
当然,在flag fields或状态寄存器中使用“flag”是非常自然的。
但是一旦标志和位之间的关联已经建立,那么它们的使用可以变得可以交换也是可以理解的。当然,这也适用于布尔变量。
PS:同样的问题已经asked,但遗憾的是没有答案。