1
210
因为每个C++数据类型必须是可寻址的。 如何创建指向单个位的指针?你不能,但是你 可以 创建指向字节的指针。因此,C++中的布尔值通常是字节大小的。(也可能更大。这取决于实现。最主要的是它必须是可寻址的,所以没有C++数据类型可以比字节小。 |
2
38
内存是字节可寻址的。如果不移动或屏蔽从内存中读取的字节,就无法寻址单个位。我想这是一个很大的原因。 |
3
18
一
对内存的访问总是以“块”(多个单词,这是为了 硬件级别的效率 ,总线事务):在大多数CPU系统中,布尔位不能“单独”寻址。当然,一旦数据包含在 登记 ,通常有专门的指令来独立地操作位。
因此,使用
“比特包装”
为了提高使用“布尔”基数据类型的效率。一种技术,如
更新的
:由于一次精彩的讨论,我注意到
|
4
6
关于8位是可寻址的最小内存量的答案是正确的。但是,有些语言 可以 在某种程度上,使用1位作为布尔值。我似乎记得帕斯卡将集合实现为位字符串。也就是说,对于以下集合:
您可能在内存中有这个:
当然,如果你想要的话,你可以在C/C++中做类似的事情。(如果你在跟踪一堆布尔人, 能够 有道理,但这取决于具体情况。) |
5
1
我知道这是旧的,但我想我会投入我的2美分。 如果您将布尔值或数据类型限制为一位,那么您的应用程序将面临内存中断的风险。如何处理内存中只有一个位长的错误统计信息? 我去参加了一次面试,项目负责人对我说的一句话是:“当我们发送发射导弹的信号时,我们只需通过无线发送一个简单的一点开一点关。”发送一个比特的速度非常快,我们需要尽可能快的发送该信号。” 好吧,这是一个测试,看我是否理解概念、位、字节和错误处理。一个坏人发一点味精多容易啊。或者如果在传输过程中比特被反方向翻转会发生什么。 |
6
1
一些嵌入式编译器具有用于位封装布尔标志的int1类型(例如用于微芯片MPU的c c s系列c编译器)。设置、清除和测试这些变量使用单指令位级指令,但编译器不允许任何其他操作(例如获取变量的地址),原因见其他答案。 |
7BeholdeR7 · 文件夹的重量超过其中的文件(六倍) 2 年前 |
Bram Vanroy · 为什么假值(0)的字节数小于真值(1)? 6 年前 |
user7088941 · 无法在tkinter中更改按钮字体大小 6 年前 |
Chewbaka · 嵌入函数中的可变大小元素,但输入和输出固定 6 年前 |
Edwin ZAP · 多布局:匹配父布局、调整内容、调整大小 6 年前 |
Kanishk Tanwar · 用于查找文本文件大小的小片段 6 年前 |
Inertial Ignorance · 为什么字符的大小只有8位? 7 年前 |