弱弱的问一句:
数字10对应的二进制是00001010
而ASCII码换行符\n对应的二进制也是00001010
请问,计算机是怎么识别这个是数字还是ascii码?
这是一个编码的问题,在ASCII编码中,\n对应的是数值是0X0A,而数字10是1和0组成,即0X31和0X30。
进一步说ASCII编码是每8位分隔为一个字符,可以理解为256进制。
赞~\(≧▽≦)/~~
数字10也是0X0A啊,“数字10是1和0组成,即0X31和0X30”这句话完全不能理解
@小小乌龟把头藏: 不知道你了解数组不,ASCII编码相当于建了一个长度为256的数组A[256],那么A[0X0A]='\n ',A[0X31]='1',A[0X30]='0'
你不能拿下标和里面存放的值比较
@浴子风: 我又回头去看了ASCII码的解释,类似于数组下标跟值的说法,没见哪里有说到,不能理解
@小小乌龟把头藏: - - 我竟无言以对!举个例子嘛,本质是这样,你还是把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/
@浴子风: 01100001不是对应数字97么,那如果我输入97a,计算机怎么识别呢,我一开始就想问这个.....基础我会去补的,真心感谢
@小小乌龟把头藏: 你输入的时候系统会按照编码转换后保存,你读取的会转换后显示。
你输入97a,编码选择ASCII,实际保存的是0X39,0X37,0X61
在文件储存时,不同的编码会在文件起始表明文件格式,比如你用记事本读取是,记事本会先判断你是什么编码储存的文件,识别是ASCII就会按照每字节进行解析,如果是Unicode编码,就会按照双字节进行解析。
@浴子风: 我有点明白了,这里的97是字符,而不是作为数字存在的,它有对应的ASCII编码,跟数字97是不一样的
@小小乌龟把头藏: 是的
\n的二进制?换行键的ASCII值才是10,二进制00001010吧
换行包括了\r\n,这两个是不同的