代码之家  ›  专栏  ›  技术社区  ›  Faraz

以位形式存储在内存中的字符串

  •  1
  • Faraz  · 技术社区  · 7 年前

    int a = 11 将以位的形式存储在内存中 1011 . 将怎样 String b = "11" 存储为位。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Geoduck    7 年前

    实际上,大多数机器上的int存储为

    00000000000000000000000000001011

    它将始终使用语言/机器上的字长(在大多数情况下为32位)。

    字符串是一个对象。它有多种属性,不同语言的实现可能会有很大差异。对于主要部分,即实际的字符串数据,有两种相当典型的存储方式:单独存储长度,或null终止。

    无论哪种方式确定长度,字符都存储为字节序列。每个字符的大小取决于语言/编译器设置等。为了支持非英语语言和特殊字符,通常每个字符存储16位,但较旧的语言通常仍使用8位。

    字符编码基于旧的ASCII表,但较新的规范涵盖了更多内容。查看UTF-8和UTF-16。

    但是,仅仅为了理解基本知识,ASCII表为我们提供了一些地方。字符串中的每个字符都由一个数字定义,然后该数字以二进制编码,就像整数一样。

    http://www.asciitable.com/

    字符“1”由ASCII码49(十进制)表示,二进制为00110001。整个字符串可能看起来像:

    包括空终止符。

        2
  •  1
  •   Kamran    7 年前
    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);
        }
    }