在C++中,我想知道为什么bool类型是8位长(在我的系统上),而只有一位足以保存布尔值?
我过去认为这是出于性能的原因,但是在32位或64位的机器上,寄存器是32位或64位宽的,性能优势是什么?
或者这只是这些“历史”原因之一?
发布于 2010-01-14 22:06:44
内存是字节可寻址的。如果不对从内存中读取的字节进行移位或屏蔽,则无法对单个位进行寻址。我可以想象这是一个非常重要的原因。
发布于 2013-02-15 02:25:38
我知道这很陈旧,但我想我应该承认我的两分钱。
如果您将布尔值或数据类型限制为一位,那么您的应用程序将面临内存中断的风险。如何处理内存中只有一位长的错误统计数据?
我去参加一个求职面试,项目负责人对我说的其中一句话是:“当我们发出发射导弹的信号时,我们只需要通过无线发送一个简单的开关位。发送一个位的速度非常快,我们需要这个信号尽可能快。”
好吧,这是一个测试,看看我是否理解了概念和比特、字节和错误处理。对于一个坏人来说,发送一条消息是多么容易。或者如果在传输过程中比特被翻转到另一个方向,会发生什么。
发布于 2015-09-29 04:03:07
某些嵌入式编译器具有用于位打包布尔标志的int1类型(例如,用于Microchip MPU的CCS系列C编译器)。设置、清除和测试这些变量使用单指令位级指令,但由于其他答案中提到的原因,编译器将不允许任何其他操作(例如,获取变量的地址)。
https://stackoverflow.com/questions/2064550
复制相似问题