首页 新闻 会员 周边

ASCII码跟数字

0
悬赏园豆:20 [已解决问题] 解决于 2016-05-26 11:21

弱弱的问一句:

数字10对应的二进制是00001010
而ASCII码换行符\n对应的二进制也是00001010
请问,计算机是怎么识别这个是数字还是ascii码?

小小乌龟把头藏的主页 小小乌龟把头藏 | 初学一级 | 园豆:9
提问于:2016-05-18 15:55
< >
分享
最佳答案
1

这是一个编码的问题,在ASCII编码中,\n对应的是数值是0X0A,而数字10是1和0组成,即0X31和0X30。

进一步说ASCII编码是每8位分隔为一个字符,可以理解为256进制。

 

收获园豆:20
皓月空 | 小虾三级 |园豆:723 | 2016-05-18 16:15

赞~\(≧▽≦)/~~

小刺猬001 | 园豆:660 (小虾三级) | 2016-05-19 08:51

数字10也是0X0A啊,“数字10是1和0组成,即0X31和0X30”这句话完全不能理解

小小乌龟把头藏 | 园豆:9 (初学一级) | 2016-05-19 09:07

@小小乌龟把头藏: 不知道你了解数组不,ASCII编码相当于建了一个长度为256的数组A[256],那么A[0X0A]='\n ',A[0X31]='1',A[0X30]='0'

你不能拿下标和里面存放的值比较

皓月空 | 园豆:723 (小虾三级) | 2016-05-19 09:35

@浴子风: 我又回头去看了ASCII码的解释,类似于数组下标跟值的说法,没见哪里有说到,不能理解

小小乌龟把头藏 | 园豆:9 (初学一级) | 2016-05-19 15:00

@小小乌龟把头藏: - - 我竟无言以对!举个例子嘛,本质是这样,你还是把C语言基础什么的看几遍吧。给你摘录一点书上的,估计你更能看懂:

计算机是以二进制的形式来存储数据的,它只认识0和1两个数字,我们在屏幕上看到的文字,在存储到内存之前也都被转换成了二进制(0和1序列)。

可想而知,特定的文字必然对应着固定的二进制,否则将无法转换。那么,怎样将文字与二进制对应呢?这就需要有一套规范,计算机公司和软件开发者都必须遵守。

ASCII码

我们知道,一个二进制位(Bit)有0、1两种状态,一个字节(Byte)有8个二进制位,有256种状态,每种状态对应一个符号,就是256个符号,从00000000到11111111。

计算机诞生于美国,早期的计算机使用者大多使用英文,上世纪60年代,美国制定了一套英文字符与二进制位的对应关系,称为ASCII码,沿用至今。

ASCII码规定了128个英文字符与二进制的对应关系,占用一个字节(实际上只占用了一个字节的后面7位,最前面1位统一规定为0)。例如,字母 a 的的ASCII码为 01100001,那么你暂时可以理解为字母 a 存储到内存之前会被转换为 01100001,读取时遇到 01100001 也会转换为 a。

完整的ASCII码表请查看:http://www.asciima.com/
皓月空 | 园豆:723 (小虾三级) | 2016-05-20 09:24

@浴子风: 01100001不是对应数字97么,那如果我输入97a,计算机怎么识别呢,我一开始就想问这个.....基础我会去补的,真心感谢

小小乌龟把头藏 | 园豆:9 (初学一级) | 2016-05-23 17:26

@小小乌龟把头藏: 你输入的时候系统会按照编码转换后保存,你读取的会转换后显示。

你输入97a,编码选择ASCII,实际保存的是0X39,0X37,0X61

在文件储存时,不同的编码会在文件起始表明文件格式,比如你用记事本读取是,记事本会先判断你是什么编码储存的文件,识别是ASCII就会按照每字节进行解析,如果是Unicode编码,就会按照双字节进行解析。

皓月空 | 园豆:723 (小虾三级) | 2016-05-24 11:54

@浴子风: 我有点明白了,这里的97是字符,而不是作为数字存在的,它有对应的ASCII编码,跟数字97是不一样的

小小乌龟把头藏 | 园豆:9 (初学一级) | 2016-05-25 14:46

@小小乌龟把头藏: 是的

皓月空 | 园豆:723 (小虾三级) | 2016-05-26 09:05
其他回答(1)
0

\n的二进制?换行键的ASCII值才是10,二进制00001010吧

小光 | 园豆:1766 (小虾三级) | 2016-05-18 16:08

换行包括了\r\n,这两个是不同的

支持(0) 反对(0) 小小乌龟把头藏 | 园豆:9 (初学一级) | 2016-05-18 16:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册