首页 > 代码库 > ASCII码
ASCII码
看一本书的时候想到的,感觉有点不务正业了,其实我感觉我需要一个全能助手,随时回答我的疑问
ASCII码是用来表示“字符”的。
这里的字符包括了0-9九个数字,a-z的26个字母的大小写,各个标点符号,以及回车、空格、退格等一些特殊符号。
ASCII 码使用指定的8位二进制数组合来表示,每个ASCII码是一个8位二进制数,一个ASCII码只能表示一个字符。
补码是用来表示带符号数字的。先将十进制数转成相应的二进制数,在最高位前加上0或1代表数字的正负,就产生了数字的原码,再按一定的规则转换成补码。
补码只能表示数字。不能表示字母或标点等特殊字符。
举个例,比如数字67,补码表示为:01110011,8位二进制数表示一个数字。
如果用到ASCII码,只能对6和7这两个数字分别用8位二进制数表达,因为ASCII码的存放是以每一位为单位的,每个ASCII码只能表示一个字符。
6:00110110
7:00110111
67: 00110110 00110111
以ASCII码形式存储,每个数字占1个字节,10002是5个数字,占5个字节
以二进制形式存储,每个整数不论大小占2个字节,10002是1个整数,占2个字节
A对应于十六进制的10,也即二进制的1010,所以以二进制存储时是1010,在内存中具体的位数和你的操作系统有关
如果用一个记事本打开一个图像文件或者声音文件或者一个EXE文件
会显示乱码,就是因为记事本以文本格式来打开所需要打开的内容,即用文本格式(或者说字符格式)来处理二进制数据导致的结果
计算机存储数字时为什么不用ASCII码呢?那个表里不是也有数字么?
因为用 ASCII 码存储数字不够经济,而且不方便计算。
补充:
举个例子,12345 和 6789 两个数字,假如用 ASCII 码储存,就会是:
00110001 00110010 00110011 00110100 00110101
和
00110110 00110111 00111000 00111001
但是用正常的二进制整形储存,就会是:
00110000 00111001
和
00010110 00101110
如果要计算 12345+6789,明显用二进制储存就会比 ASCII 占优势。
追问:
那为什么表里还要有数字呢,都用二进制不就行了
回答:
ASCII 表里还是需要数字,因为计算出来的结果还是需要打印出来了,这时候就需要把二进制的数字转换成为 ASCII 码了。输入的时候,就是反过来把 ASCII 码转换成为二进制来保存了。更何况有时候数字更侧重于文字意思,如 3D、AK47,这样的组合就必须用 ASCII 码来储存了。
其实除了整型以外,还有实型的数字,处理小数点。终结一句,就是数字在计算机里面可以有不同的储存方式,是要看用哪一种表达方式比较方便的。也因此,在计算机语言中必须说明用哪一种方式储存,也就是变量的数据类型。
在计算机的存储单元中,一个ASCII码值占一个字节(8个二进制位),其最高位用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位添1;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位添1。
大家好,我想问一下ascii码是存储在计算机哪里?是在操作系统中就安装好了吗?还是存储在硬件上?
1、微机的键盘是带CPU的,它把按键信息转换成对应的ascii码,传给主机,操作系统接收到的就是一串ascii字符了。在dos操作系统时代,操作系统只要把对应的ascii码存到显存里,显卡就会根据ascii码查找字模,并显示在屏幕上。windows时代,由于是图形界面,可设定不同字体及字号等,所以这个由ascii码转换成字模的过程就是windows的底层接口和显示驱动来完成的。这一切的处理过程与显示器无关,显示器只是把显卡送来的视频信号扫描出来而已。
2、ascii码本身不需要储存,需要储存的只是代码和字模的对应表
3、键盘和鼠标均是基本的硬件,可以说是最低层的设备,它内部会有CPU处理这些信号,把按键信息处理成主机可识别的二进制数据,然后送给主机,主机收到这些信息时会触发中断,中断信号会传递给CPU,CPU在允许的情况下就会接收这些数据,这是硬件层面的理解。
主机接收数据及处理数据的过程则是软件层面的理解了,驱动负责把这些数据转换成操作系统可理解的数据,操作系统根据再根据这些数据,进行相应操作,如把字符显示到屏幕上。
你的提问中,可见你对计算机原理的理解是很混乱的,还是先看看书吧
ASCII码