为什么布尔数据类型需要8位? [英] Why does the boolean data type need 8 bits?

查看:247
本文介绍了为什么布尔数据类型需要8位?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

布尔数据类型仅计算为 true false ,因此它总是只需要一位记忆。那么为什么需要额外的7位内存,这不是浪费内存吗?

Boolean data type only evaluates to true or false, so it is always going to take only one bit of memory. So why is there a need of extra 7 bit of memory, isn't it a waste of memory?

推荐答案

我认为它可能需要超过8个。这取决于JMV。在Oracle JVM原语 boolean 需要8位,原因是支持有限且缺乏优化

I think it may need more than 8 bits. It depends on JMV." In Oracle JVM primitive boolean needs 8 bits, the reason is limited support and lack of optimization.

另请阅读: Java中布尔变量的大小是多少?

Java教程 - 原始数据类型


boolean :布尔数据类型只有两个可能的值:true和false。将此数据类型用于跟踪真/假条件的简单标志。此数据类型代表一点信息,但是尺寸不是精确定义的东西

boolean: The boolean data type has only two possible values: true and false. Use this data type for simple flags that track true/false conditions. This data type represents one bit of information, but its "size" isn't something that's precisely defined.

Java®VirtualMachi ne规范


虽然Java虚拟机定义了一个布尔类型,但只有提供
非常有限支持它
。没有Java虚拟机指令单独
专用于布尔值的操作。相反,Java
编程语言中对布尔值进行操作的表达式被编译为使用Java虚拟机int数据类型的值

Although the Java Virtual Machine defines a boolean type, it only provides very limited support for it. There are no Java Virtual Machine instructions solely dedicated to operations on boolean values. Instead, expressions in the Java programming language that operate on boolean values are compiled to use values of the Java Virtual Machine int data type.

在Oracle的Java虚拟机实现中,Java
编程语言中的布尔数组被编码为Java虚拟机字节数组,每个
布尔元素使用8位

例如布尔值类型在内存中看起来像这样

For example Boolean type looks in memory like this

header:   8 bytes 
value:    1 byte 
padding:  7 bytes
------------------
sum:      16 bytes

作为 boolean [] 的替代品你可以使用例如 java.util.BitSet

As an alternative to boolean[] you can use for example java.util.BitSet.

为什么很难将布尔存储为1位?阅读来自莫斯科的Vlad回答。你不能解决一点内存。

Why is hard to store booleans as 1 bit? Read Vlad from Moscow answer. You cant address one bit of memory.

这篇关于为什么布尔数据类型需要8位?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆