我正在写一个编程语言,并且当我碰到 这个问题, 我立即想到的是这种语言应该优化布尔成点的标志程序员。这将让所有的利益的速度和高效率的存储器使用,同时除去负担的维修和可能性的错误引起的更多复杂的位的操纵。

第一种情况下,你可能想不具有这种优化是如果你有一个情况下,只有一组的布尔被存储。基本上,如果你有 8 bits for flags + 8 bit masks * 8 bits per bit mask = 72 bits 而不是的 8 booleans * 8 bits per boolean = 64 bits.但只要你们甚至两份布尔,就变成 2 copies * 8 bits for flags + 8 bit masks * 8 bits per bit mask = 80 bits2 copies * 8 booleans * 8 bits per boolean = 128 bits.这似乎是少数的情况下,布尔会更储存最佳的会很容易检测这样一个可能 适用的优化。

是否有任何原因,这种语言不支持这一优化?我环顾四周,它似乎没有任何语言(我可以只要不被打在正确的地方)。

有帮助吗?

解决方案

我见过人这样做在大会的语言,他们包布尔变成文字的保存空间,并随后写的很多指令,以获取/设置的位。

显然有一个折衷的速度和存储器中间包装布尔,并没有包装,以及我个人很害羞的一个编译器,试图决定这对我来说。

其他提示

C不会...

#include <stdio.h>

typedef struct foo_s {
    unsigned char field1 :1;
    unsigned char field2 :1;
    unsigned char field3 :4;
    unsigned char field4 :2;
} foo_t;

int main() {
    printf("%d\n", sizeof(foo_t));
    return 0;
}

时运行,这四个领域获得装成一个字:

$ gcc -Wall -o bittest bittest.c 
$ ./bittest 
1
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top