计算机存储数据原理
计算机只是一堆模拟和数字的集成电路,它们只能明白0和1两种高低电平,其他什么也不理解,那么人们怎么操作机器呢?刚开始只是通过0110这样打孔来操作机器,后来慢慢有了汇编和其他高级语言来操作机器。
如何管理数据存储
既然不管字符还是字符串数据在计算机中都只能用01来表示,那我们怎么区分他们的不同呢,很简单,就是使用多位的0和1来表示,1个不够区分就用2个还不够就依次往上加,而7个01就可以表示128个不同的数了,也就是说多少位就可以表示2的几次方个不同的数据。
那么哪些二进制数代表什么数据,这需要一个统一的编码规则,否则大家就会通信混乱,于是,人们提出了ASCII码,统一规范了常用符号必须由哪些二进制数表示,这样人们一旦使用了相同的编码规则就可以互相通信了。
ASCII码规则
计算机中的字符包括数值、英文字母、标点符号、制表符号及其他符号。每一个字符都用一个特定的二进制代码来表示,这就是字符的编码。目前,字符编码采用的是美国信息交换标准代码,即ASCII 码。它是用一个字节的低七位来表示一个字符的编码, 2^7 =128 ,最高位是 0 ,所以,用 ASCII 码可表示 128 个字符)。有了这个我们就不怕我们输入的字符,计算机不懂了。于是只要我们自己在程序中输入一个字符(例如:‘a’)计算机在编译过程中自动将它转换成97的二进制码,这就是为什么说字符本质上也是整型了,因为字符变量只是告诉计算机,我这个数据只占一个字节,也就是说我超不出128这个数去。而int则告诉我这个数可能很大,有65534那么大呢。
数和字符的关系
下面就说说为什么字符减’0’可以到相应的整数。现在比如我们要字符‘1’转换成数字1,就这么一个变化,我们注意到字符型常量用’'括起来的原因是,它们在计算机中都以各自的ASCII表示。而‘1’的对应编码是49的二进制码,但是我们的数字1,就等于1呀,所以为了由原来的‘1’实际上就是49的二进制变成现在的1对应的二进制1,只好用49-48=1了。但是在ASCII码里‘0’对应的刚好是48的二进制码,所以我们转换的时候只需要‘1’-‘0’=1;就可以了。而数字的ASCII码是按顺序规定的。所以其它字符要转换成数字都可以用减‘0’来表示。比如‘2’的ASCII是50,而我们要得到数字2,于是用‘2’-48=2了。看来当我们知道数据在计算机中的存储规则的时候,问题就迎刃而解了。
大小写字母的转换:先看ASCII码:a ~ z是97~122的二进制,而A ~ Z是65~90的二进制编码,于是我们就得出:大写字母=小写字母-32 ;这个公式了。当然这里的32我也可以这么写‘Z’=‘z’-‘空格’。因为空格的ASCII码是32对应的二进制编码。