字符串、整数、数据类型

Strings, integers, data types

经过几年编写供自己使用的代码,我正在努力理解它的真正含义。

a = "Foo"
b = ""
c = 5
d = True

问题:

首先,字面值是任何在代码中字面出现的值,例如"hello"是一个字符串字面量,123是一个整数字面量等。对比例如:

int a = 5;
int b = 2;
int c = a + b;

ab 具有分配给它们的文字值,但 c 没有,它具有分配给它的计算值。

对于任何文字值,我们都用它的数据类型来描述文字值(如第一句中所示),例如"string literal" 或 "integer literal".

现在数据类型是指计算机,或者计算机上的软件运行如何解释二进制文件一些数据的价值。对于大多数类型的数据,字节的解释通常在标准中定义。例如,utf-8 是一种解释字符串内部(二进制)值的 字节 的方法。有趣的是,字符串的实际字节被视为无符号的 8 位整数。在 utf-8 中,这些整数的值以各种方式组合在一起,以确定在数据中遇到这些值时应在屏幕上显示哪个字形或字符。 utf-8 是一种 variable-byte-length 编码,每个字符可以有 1 到 4 个字节(8 到 32 位)。

对于数字,尤其是整数,实现可能会有所不同,但大多数表示使用四个字节,顺序为最高有效字节在前,第一个字节的第一位作为符号,带符号整数,或第一位只是无符号整数的最高有效位。这被称为 multi-byte 整数中字节的 big-endian 排序。还有 little-endian 编码,整数原则上可以使用任意数量的字节,但最典型的实现是 1、2、4,有时是 8,其中 bit-wise 你分别有 8、16、32 或 64。对于不属于这些大小的整数大小,通常需要自定义实现。

对于浮点数,它变得有点棘手。浮点数有一个通用标准,称为 IEEE-754 which describes how floats are encoded. Likewise for floats, there are different sizes and variations, but primarily we use 16, 32, 64 and sometimes 24-bit in some mobile device graphics implementations. There are also extended precision floats,它使用 40 或 80 位。