程序语言或者说计算机是怎么知道字符对应的ASCII码是几的?

论坛 期权论坛 期权     
匿名用户1024   2021-5-15 09:09   5431   3
突然想到这个问题。我们在编程的时候,计算机会自动把字符串里的'a'转换成96再保存到内存。但是,计算机怎么知道a是96,而不是97或者44的?
譬如,我存了一张ascii码表,如果我不知道a的ascii码是几,我就要遍历这张表去找。但是,计算机可没有眼睛,它是怎么认出我打的a长得和它内存的里的a一个模样并且映射到96的呢?
分享到 :
0 人收藏

3 个回复

倒序浏览
2#
有关回应  16级独孤 | 2021-5-15 09:09:10 发帖IP地址来自
一句话,你看到的"a"已经是几经转换的结果了。

稍微详细一点说,当你在键盘上按下“a"键时,被输入到机器内部的是该键的ASCII码,而不是该键的字形。在你按键的“同时”(其实对电脑来说已经是时光飞逝...),计算机在屏幕上显示出了你敲的"a",这是因为你编程序的工具必须要让你看到代码,所以内部通过ASCII码值调取了你的代码字体文件,然后将对应的字符的样子显示到你的屏幕上。

那么这段自动处理的过程当然也是程序,这个程序由OS负责,中间涉及到了键盘、I/O接口,终端调用,API,CPU,RAM,寄存器/运算器/Cache,总线,显示芯片,还有,当然,你的显示器。

所以其实你输入的不是"a",而是0001110。你输入的其实是二进制数,计算机自己也一直在处理二进制数,只是为了让你看明白,键盘上的键上印了“a",屏幕上显示了"a"。
计算机为了让愚蠢的人类看明白自己都做了些什么,真是操碎了比特心。

最后顺便说一句,"a"不是96。
3#
有关回应  16级独孤 | 2021-5-15 09:09:11 发帖IP地址来自
编码解码都是人订的,计算机对96按照人的要求用ASCII表查询解码
4#
有关回应  16级独孤 | 2021-5-15 09:09:12 发帖IP地址来自
当我们敲击键盘的时候,键盘会发送扫描码给CPU引发中断事件,中断处理子程序被CPU调用,扫描码被传递给操作系统,告诉它哪个键被按下或松开。操作系统得到扫描码,通知应用程序做出处理(对于处于编辑状态的文本编辑器来说就是将扫描码对应字符的机内码记录到内存缓冲区中,然后通过操作系统向显示设备发送请求和数据,让其在屏幕上显示相应的字符,这里就涉及到查表的过程)这其中所有操作的实际意义计算机是不知道的,它只是按照事先编好的程序工作。

因此,与其说是计算机将字符翻译成机内码,倒不如说是人看到机内码头脑中想到了字符。

如果你的文本编辑器可以编辑二进制文件, 你可以试一下先用文本模式敲一段字符进去,然后再用二进制模式打开,就能感受到计算机跟人看到东西的不同了。


声明:操作系统跟接口技术都没学,以上纯属猜测,也很不详细,仅供参考
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:136515
帖子:27303
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP