计算机使用二进制计算的原因(让小朋友懂一点计算机)
前面的小短文我们讲了二进制,二进制的表达方式很有限,单个载体只能表达出两种信息在这里,这种单个载体称之为比特位,比特位即bit,是计算机最小的存储单位,以0或1来表示比特位的值,对应于实际世界一个晶体管但是众人拾柴火焰高,人多力量大,我们可以使用多个载体来传达信息,我来为大家科普一下关于计算机使用二进制计算的原因?以下内容希望对你有帮助!
计算机使用二进制计算的原因
引言前面的小短文我们讲了二进制,二进制的表达方式很有限,单个载体只能表达出两种信息。在这里,这种单个载体称之为比特位,比特位即bit,是计算机最小的存储单位,以0或1来表示比特位的值,对应于实际世界一个晶体管。但是众人拾柴火焰高,人多力量大,我们可以使用多个载体来传达信息。
一个晶体管只能表达0 和 1这两种状态,但是两个晶体管可以表达4 (2的2次方 = 4) 种状态,分别为:00、01、10、11。而三个晶体管可以表示8种状态(2的3次方 = 8)。所以比特位的数目越多,我们可以表达的状态和信息量就越多。
字节、字、双字一般来说,我们把8个比特位合在一起,可以理解为实际的8个晶体管称为一个字节,英文单词为Byte。把两个字节合在一起叫做字,英文单词为Word,如果两个字合在一起,就叫做双字,Double Word。对应关系如下:
1字节 = 8比特
1字 = 2字节 = 16比特
双字 = 2字 = 4字节 = 32比特
此外,就像我们有千米,千克,一样
1 KB = 1000 Bytes
1 MB = 1000 KB
1 GB = 1000 MB
1 TB = 1000 GB
这里我用了1000作为换算比值,这是因为商家们在卖给我们产品的时候,比如宣称U盘有32个G,但实际上我们插到电脑里会发现只有29个G作业,除了一些必要的文件占用之外,还有一个原因是因为商家的换算比值与计算机内部的换算比值不同,计算机内部的换算比值为1024,即1 KB = 1024 Bytes。至于为什么商家为什么要这样,这可以说是一个商业噱头,宣传的时候数字大点可能消费者更喜欢。因此,换算比值可以是1024也可以是1000。
如何表示数字我们现在用的是10进制,我们使用0-9这10个数字再加上很多的位数可以表达出无穷无尽的数字。为什么158 这是数是意思是一百五十八,因为这是由8个1,5个10,1个100相加起来的数,我们会把每一位的数字乘以一个特殊的基数 这个基数会随着位置的变化而变化,从右往左开始,第一位的基数是1,第二位的基数10,它是第一位基数的10倍,第三位是100,它是第二位基数的10倍,这很简单。
158 = 1 * 10^2 5 * 10^1 8 * 1
158 = 100 50 8 = 158
同样的,二进制110其实是10进制中的6
110 = 1 * 2^2 1 * 2^1 0 * 1
110 = 4 2 0 = 6
在这里,我要提一下16进制16进制是一个很重要的进制。16进制表达二进制数起来会很简短 例如二进制数11110011表示为16进制数就是0x0F3。16进制的每一位有15种表示状态,分别为0-9再加上英文字母A-F,以表示10到15.,并且在书写16进制数时,最好在前面加上0x。如果数字开头为字母,则需要加上一个0,以防混淆,例如0xF要写成0x0F。同样的0x0F表示10进制的15:
0x0F = 0 * 16 15 * 1 = 15
正负数表示如果需要区分正负数,那么就需要占用额外的比特位,如果不考虑正负,那么一个字节可以表示0到255,如果要表示正负的话,我们会选择从左到右的第一位作为正负标记,一般规定,1代表负数,0代表正数,例如:
10000001 的含义为 -1
00000001 的含义为 1
这样,所能表示的数的范围就成为了-128到127。
浮点数表示浮点数包含的信息很多,根据IEEE754标准,单精度我们需要32位来存储信息
双精度需要64位来存储信息。
这里举一个例子,625.9可以用科学计数法表示为
0.6259 * 10^3
在这里,有三个关键的参数
1、 符号位(Sign) : 0代表正,1代表为负
2、指数位(Exponent):用于存储科学计数法中的指数数据,并且采用移位存储
3、尾数部分(Mantissa):尾数部分
具体如下图
浮点数表示法
如何表示文字其实表示文字和表示数字差不多。直接上图,来点感性认识:
这是一个简单的字符打印小程序
这是一段很小的c程序,在这段程序里,97这个数字如果输出方式为数字,那它就是数字97,如果输出方式为字符,那么它就是英文小写字母a, 98这个数字代表着小写字母 b ,在这段程序的眼中,字符和数字没什么不同,本质都还是数字,这种人为规定就将字母和数字联系了起来。
由于早期的计算机基本都是在欧美或者是其他国家发明的,对于以英语为主的国家,所需要的字符量很少,阿拉伯数字,26个英文字母还有若干个标点符号就可以满足基本的日常需要,这样,把这种对应关系固定下来,就有了ASCII码表。
美国标准信息交换代码是由美国国家标准学会(American National Standard Institute , ANSI )制定的,标准的单字节字符编码方案,用于基于文本的数据。起始于50年代后期,在1967年定案。它最初是美国国家标准,供不同计算机在相互通信时用作共同遵守的西文字符编码标准,它已被国际标准化组织(International Organization for Standardization, ISO)定为国际标准,称为ISO 646标准。适用于所有拉丁文字字母。
ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号, 以及在美式英语中使用的特殊控制字符。
——百度百科
ASCII码对照表
中国汉字的存储由于我们中国的汉字很特殊,每一个字都是唯一的,一般不能由其他字组合起来,不像英文单词是由26个字母拼合起来的。因此,我们需要足够多的数字来一一对应汉字,因此一般汉字的存储需要两个字节,或者说一个字,也就是16比特,
16比特可以存储2^16次方 即 65536种信息。并且我们有自己的编码规范。
《信息交换用汉字编码字符集》是由中国国家标准总局1980年发布,1981年5月1日开始实施的一套国家标准,标准号是GB 2312—1980。1995年又颁布了《汉字编码扩展规范》(GBK)。GBK与GB 2312—1980国家标准所对应的内码标准兼容,同时在字汇一级支持ISO/IEC10646—1和GB 13000—1的全部中、日、韩(CJK)汉字,共计20902字。
随着要支持的汉字越来越多,还有适应社会的不断发展,我们国家的编码规范也在不断地更新完善。
万国码随着世界各国的经济文化交流越来越紧密,各国国家不能固步自封,迫切地需要一种统一的计算机字符编码,这时,万国码(Unicode)出现了。
万国码,万国码,通俗的讲就是全世界都通用的编码,它为了全世界通用,采用了一种非常简单的方法,就是将全世界所有的文字,符号都存放在一起。
Unicode 是有两个字节、四字节之区分,UCS-4用4个字节编码,可表示2的32次方,即4294967296种字符。
Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
通用字符集(Universal Character Set, UCS)是由ISO制定的ISO 10646(或称ISO/IEC 10646)标准所定义的标准字符集。UCS-2用两个字节编码,UCS-4用4个字节编码。
资料来源特此鸣谢 The Crash Course
本篇有图片来源于网络,如有侵权,立即删除。
由于本篇涉及到的内容有些宽泛,因此只能给大家一个简单的感性认识,并没有涉及到图片的存储,因此下一篇会补上。如果读者想深入探讨,可以上网搜索相关资料,如果错误,望批评指正,不胜感激。
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com