我正在学习位以及内存如何存储整数和其他数据类型。我知道int a = 11
将作为1011
位存储在内存中。如何将String b = "11"
存储为位。
答案 0 :(得分:1)
实际上,大多数机器上的int存储为
00000000000000000000000000001011
它总是使用语言/机器上的字大小(或大多数情况下为32位)。
字符串是一个对象。它具有各种属性,语言之间的实现可能有很大差异。对于主要部分,实际的字符串数据,有两种相当典型的存储方式:分别存储长度或空终止。
无论哪种方式确定长度,字符都存储为字节序列。每个字符的大小取决于语言/编译器设置等。为了支持非英语语言和特殊字符,通常每个字符存储16位,但较旧的语言通常仍然使用8位。
字符编码基于旧的ASCII表,但更新的规范涵盖了更多。查看UTF-8和UTF-16。
但是,为了理解基础知识,ASCII表为我们提供了一个可去的地方。字符串中的每个字符都由一个数字定义,然后该数字以二进制编码,就像int。
字符“1”由ASCII码49(十进制)表示,二进制为00110001.整个字符串可能如下所示:
001100010011000100000000
包括空终止符。
答案 1 :(得分:1)
public static void main(String[] args) {
for(final byte b : "11".getBytes()) {
String asBinary = String.format("%8s", Integer.toBinaryString(b & 0xFF)).replace(' ', '0');
System.out.print(asBinary);
}
}