假设我要设计一种低级语言,例如。我可以拥有的变量的实际最小数据类型是多少?比方说,例如java中的原始布尔值只需要1位,它使用的实际内存占用量(内存大小)是多少?
答案 0 :(得分:5)
最小的直接可寻址实体是byte,现在通常为8位。然后没有什么可以阻止你在那里打包多个高级语言布尔值,但这将涉及转移和屏蔽的运行时开销,所以这是一个权衡。
答案 1 :(得分:0)
理论上你可以有一个只占1位的变量。 然后,编译器将生成一个代码,该代码获取一个字节并通过位操作(&,shift)从中获取信息。
如果您使用某种压缩来存储数据并检索与该变量相关的数据,那么它甚至可能不到一点......
答案 2 :(得分:0)
并非所有32位处理器架构都是相同的,并且并非给定架构的所有实现都具有相同的字大小。它最终取决于处理器本身。 8位,16位和32位字大小在32位系统上都很常见。内存地址(通常 - 正如Paul R在下面指出的那样,系统存在最小地址是字大小)分配给每个字节,通常是8位(虽然它不一定是 - 我不知道一个非理论架构,但不是,但我确定存在一个)。因此,您可以有意义地分配的最小内存量是1个字节。
答案 3 :(得分:0)
这取决于您的目标平台。最小的可寻址存储器单元在x86上是1字节(8位)。话虽这么说,你可以设计你的语言来操纵字节的各个位,就像C和C ++位字段一样。然而,在引擎盖下,编译器需要在字节级别生成一些奇特的位操作来旋转这些位。