陈宇恒博客 - 二进制
type: channel
link: https://chenyuheng.cn/tag/%E4%BA%8C%E8%BF%9B%E5%88%B6/
items: 计算机的一些知识

计算机的一些知识
type: item
date: 2013-06-01T11:14:36+00:00
description: 这篇文章是想科普一下，不过我不想误导他人，这里只是我自己的理解，所以如果有这方面的砖家看到了这篇文章有什么不对的地方，就赶快告诉我让我改正吧。我们知道，在计算机内部的数据储存于处理都是以二进制的方式进行的，二进制就是逢二进一，与我们日常生活中的十进制逢十进一相对，这两种进制之间可以互相转化，十进制中的1也就是二进制中的1，但十进制中的2，在二进制中逢二进一，就是10,3是11,4是100，5是101，6是110,7是111,8是1000,9是1001,10是1010,11是1011……仔细观察他们的规律，就应该可以看出十进制与二进制的关系了，事实上，他们之间的转化有更简单的方式，有兴趣可以自己查查，这里不再多说。 我猜想，计算机的储存器（比如硬盘，u盘等）中分成了很多小的单元，也许是磁粉，我们可以将它想想成许多的小格子，放大后就像这样：一个单元就表示计算机中最基础的单位：位（bit），可以用1位的“有”和“无”来表示“1”和“0”，这样，像这张图片就可以转化成二进制数10100001010100111010000000110001001000010010000001001000001001110010001，也就可以将这个二进制数转化成十进制数11624811196042987559（直接用计算机算的，算的过程以我的水平就不好说了），然后间接的表示各种文件。事实上二维码也是根据这个原理制成的。但怎么将表示这些十进制数转化成各种文件呢？这里可能会用到字符集，所谓字符集，就是把各种文字和符号集合在一起，每一个文字或符号用一个数字表示，常用的字符集有ANSI字符集和Unicode字符集，其中ANSI字符集包括拉丁字母（也就是我们说的英文字母）的大小写和一些符号，共有2^8-1=255个字符；Unicode字符集包括全球大部分语言文字（包括汉字）以及一些特殊符号的字符集，有2^16-1=65535个字符。利用这些字符集我们就可以把十进制数转化为文字和符号。转化成为文字与符号之后就好说了，txt纯文本文件直接保存。至于网页文件，网页文件大都是用htlm代码写的，html代码就是文字和符号的组合，通过浏览器也可以表达出来。图片以及音频什么的各种文件都是可以的，这里以图片为例。图片是由许多像素组成的，比如这个很小的图片：放大之后就是由很多的正方形格子组成：每一个格子就是一个像素，通过RGB颜色（可以参见本博客的文章《RGB颜色规律》）可以用文字表述每一个像素的颜色，再将这些像素组合起来，就可以组成一张图片了，像素越多，图片就会越清晰，将这些像素组合起来的方式不同，也就构建成了图片的不同的格式，其他文件的不同格式原理和这个类似。在这里还说下，我们知道一个英文或数字符号所占的磁盘空间为1字节（1Byte），1字节=8位（Byte=8bit),因为英文数字和符号都在ANSI字符集中，而8位的不同组合有又刚好可以表示0-255之间的十进制整数，于是英文数字符号都之占1字节，但汉字以及一些相对特殊的符号只在Unicode字符集中有，而表示Unicode字符集需要用16位来表示，16位=2字节（16bit=2Byte），所以汉字以及其他符号都要占2字节。 还有，我们在计算机中输入的数字在计算机中并不是直接以二进制转换成的十进制表示的，也是在字符集中用字符的代号表示的。这些知识可能有不对之处，而且对于不从事计算机工作的人也没有太大的用处，但了解总比不了解好，最后，我想问你听懂了没有？