seegongsik
结构

怎么工作 文字 怎么变成数字

前面说过,计算机只认识数字。可我们在键盘上打的是字,屏幕上显示的也是字。只懂数字的机器是怎么处理文字的?这一课我们就往里看一看。

01

每个字符都有编号

秘密比想象中简单。
人们聚在一起,给每个字符定好了编号。
比如A是65号,B是66号。
所以你在键盘上按下A,传给计算机的不是字母,而是数字65。

A→65
128
0
64
1
32
0
16
0
8
0
4
0
2
0
1
1
A = 65 = 0100 0001

点一个字符,就能看到它的编号。

从A到Z的大写字母,还有小写字母、数字和符号,都有各自的编号。
这种给字符编号的约定叫作ASCII码。
它是计算机处理文字时最早被广泛使用的对照表。

02

编号再变成0和1

回想一下上一课:计算机连数字也是用0和1存的。
所以65这个编号,最后也是存成8个开关的开和关。
一个字符就变成了8个0和1。

A→65
128
0
64
1
32
0
16
0
8
0
4
0
2
0
1
1
A = 65 = 0100 0001

A是65号,这个编号再变成8个0和1。

所以一个英文字符通常占8个开关,也就是1字节。
“字节”这个词,指的就是8个一组,在这里第一次出现。
文字说到底也是0和1。

03

打开对照表看看

下面就是ASCII对照表的实际样子。
字符按编号顺序排好,每个字符旁边都写着它的编号。
大写A是65,小写a是97,数字0是48。

!
33
"
34
#
35
$
36
%
37
&
38
'
39
(
40
)
41
*
42
+
43
,
44
-
45
.
46
/
47
0
48
1
49
2
50
3
51
4
52
5
53
6
54
7
55
8
56
9
57
:
58
;
59
<
60
=
61
>
62
?
63
@
64
A
65
B
66
C
67
D
68
E
69
F
70
G
71
H
72
I
73
J
74
K
75
L
76
M
77
N
78
O
79
P
80
Q
81
R
82
S
83
T
84
U
85
V
86
W
87
X
88
Y
89
Z
90
[
91
\
92
]
93
^
94
_
95
`
96
a
97
b
98
c
99
d
100
e
101
f
102
g
103
h
104
i
105
j
106
k
107
l
108
m
109
n
110
o
111
p
112
q
113
r
114
s
115
t
116
u
117
v
118
w
119
x
120
y
121
z
122
{
123
|
124
}
125
~
126

同一个字母,小写的编号比大写大32。

有意思的是,大写和小写字母正好相差32。
A是65,a是97。
这不是巧合,而是为了让计算机方便地切换大小写,特意这样规定的。

04

8个开关不够用

8个开关能表示256种情况。
英文字母、数字和符号全放进去,还有空余。
这是英语国家定的约定,所以一开始这样就够了。

0 ~ 255 · 256

从0到255,一共256种。

可世界上不只有英语。
韩文光音节字就超过一万个,汉字更有好几万个。
再加上表情符号,256个根本不够。
于是需要新的约定。

05

大字符要多用几个字节

解决办法很简单。
一格不够,就多用几格。
在最常用的UTF-8编码里,英文还是1字节,韩文一般占3字节,表情符号占4字节。
这张给世界上所有字符编号的巨大对照表,叫作Unicode(统一码)。

A
一个英文字
1字节 (1格)
0100
가
一个韩文字
3字节 (3格)
1110
1011
1000
一个表情符号
4字节 (4格)
1111
1001
1001
1000

不同的字符占的格数不一样。

所以同样是一个字,占的地方却不一样。
一个英文字母占一格,一个韩文字占三格。
我们数消息字数和计算机数出来的结果不一样,原因就在这里。

06

一句话说到底也是一串数

这次把短短一行整个拿来看。
每个字符变成编号,编号再变成0和1。
我们发出的每条消息,往里看都是这样长长的一串数。

Hi
H720100 1000
i1050110 1001

计算机眼中的Hi这两个字母。

把文字显示到屏幕上时,这个过程就倒过来。
先读出0和1,算出编号,再到对照表里找到这个编号对应的字符画出来。
在我们眼里是文字,里面从头到尾都是数。

一句话总结只懂数字的计算机能处理文字,靠的是一张给每个字符编号的对照表。而这些编号,归根结底也是第1课讲的0和1。
← 结构
如果有帮助,请支持我们