开发者社区> 哈沙给> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

ASCII码

简介: 看一本书的时候想到的,感觉有点不务正业了,其实我感觉我需要一个全能助手,随时回答我的疑问   ASCII码是用来表示“字符”的。这里的字符包括了0-9九个数字,a-z的26个字母的大小写,各个标点符号,以及回车、空格、退格等一些特殊符号。
+关注继续查看

看一本书的时候想到的,感觉有点不务正业了,其实我感觉我需要一个全能助手,随时回答我的疑问

 

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码值占一个字节(8个二进制位),其最高位用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位添1;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位添1。

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
十六进制字符串
十六进制字符串
0 0
处理字符问题(0701)
本文为《汇编语言程序设计》0701小节例程。点击链接…进课程主页。 例:汇编程序中字符的表示 assume cs:code, ds:data data segment db 'unIX' db 'foRK' data ends code segment start: mov al,'a' mov bl,'b' m
584 0
全角字符与半角字符的相互转换(C#)
看到视频里有做这个例子,对着视频把代码打了一遍,测试成功,先记下来,以备后用!!! Code/// 全角半角的相互转换/// /// public class ConvertDBCAndSBC{     /// 半角转成全角    /// 半角空格32,全角空格12288    /// ...
784 0
FCKEidtor自動統計輸入字符個數(IE)
由於項目需要,需要做字數統計,於是寫了一個JS計算字符個數,如果輸入的字符數大於100個字符,就彈出提示,點擊【確定】后,自動截取為100個字符。 此方法支持IE 不支持火狐。可能是因為FCKEidtor的keyup方法在火狐下不被支持。
536 0
ASCII码值表
ASCII码值表 Char Dec Oct Hex | Char Dec Oct Hex | Char Dec Oct Hex | Char Dec Oct Hex ------------------------------------------------------...
514 0
C#字母转换成数字/数字转换成字母 - ASCII码转换
字母转换成数字 byte[] array = new byte[1];   //定义一组数组arrayarray = System.Text.Encoding.ASCII.GetBytes(string); //string转换的字母int asciicode = (short)(array[0]); ASCII码 = Convert.
2077 0
+关注
哈沙给
渣渣一枚
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载