Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1367883
  • 博文数量: 245
  • 博客积分: 10021
  • 博客等级: 上将
  • 技术积分: 3094
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-12 14:51
文章存档

2011年(2)

2009年(152)

2008年(91)

我的朋友

分类:

2008-12-30 13:10:15

资料表示方式

事实上我们的电脑只认识0与1,记录的资料也是只能记录0与1而已,所以电脑常用的资料是二进位的。 但是我们人类常用的数值运算是十进位,文字方面则有非常多的语言,台湾常用的语言就有英文、中文(又分正体与简体中文)、日文等。 那么电脑如何记录与显示这些数值/文字呢?就得要透过一系列的转换才可以啦!底下我们就来谈谈数值与文字的编码系统啰!
小标题的图示数字系统

早期的电脑使用的是利用通电与否的特性的真空管,如果通电就是1,没有通电就是0, 后来沿用至今,我们称这种只有0/1的环境为二进位制,英文称为binary的哩。所谓的十进位指的是缝十进一位, 因此在个位数归为零而十位数写成1。所以所谓的二进位,就是逢二就前进一位的意思。

那二进位怎么用呢?我们先以十进位来解释好了。如果以十进位来说,3456的意义为:
3456 = 3x103 + 4x102 + 5x101 + 6x100

特别注意:‘任何数值的零次方为1’所以100的结果就是1啰。 同样的,将这个原理带入二进位的环境中,我们来解释一下1101010的数值转为十进位的话,结果如下:
1101010=1x26 + 1x25 + 0x24 + 1x23 + 0x22 + 1x21 + 0x20
= 64 + 32 + 0x16 + 8 + 0x4 + 2 + 0x1 = 106

这样你瞭解二进位的意义了吗?二进位是电脑基础中的基础喔!瞭解了二进位后,八进位、十六进位就依此类推啦! 那么知道二进位转成十进位后,那如果有十进位数值转为二进位的环境时,该如何计算? 刚刚是乘法,现在则是除法就对了!我们同样的使用十进位的106转成二进位来测试一下好了:

二进位转十进位
图3.1.1、十进位转二进位的方法

最后的写法就如同上面的红色箭头,由最后的数字向上写,因此可得到1101010的数字啰! 这些数字的转换系统是非常重要的,因为电脑的加减乘除都是使用这些机制来处理的! 有兴趣的朋友可以再参考一下其他计算计概论的书籍中,关于1的补数/2的补数等运算方式喔!
小标题的图示文字编码系统

既然电脑都只有记录0/1而已,甚至记录的资料都是使用byte/bit等单位来记录的,那么文字该如何记录啊? 事实上文字档案也是被记录为0与1而已,而这个档案的内容要被取出来查阅时,必须要经过一个编码系统的处理才行。 所谓的‘编码系统’可以想成是一个‘字码对照表’,他的概念有点像底下的图示:




编码表
图3.2.1、资料参考编码表的示意图


当我们要写入档案的文字资料时,该文字资料会由编码对照表将该文字转成数字后,再存入档案当中。 同样的,当我们要将档案内容的资料读出时,也会经过编码对照表将该数字转成对应的文字后,再显示到萤幕上。 现在你知道为何浏览器上面如果编码写错时,会出现乱码了吗?这是因为编码对照表写错, 导致对照的文字产生误差之故啦!

常用的英文编码表为ASCII系统,这个编码系统中, 每个符号(英文、数字或符号等)都会占用1bytes的记录, 因此总共会有28=256种变化。至于中文字当中的编码系统目前最常用的就是big5这个编码表了。 每个中文字会占用2bytes,理论上最多可以有216=65536,亦即最多可达6万多个中文字。 但是因为big5编码系统并非将所有的位元都拿来运用成为对照,所以并非可达这么多的中文字码的。 目前big5仅定义了一万三千多个中文字,很多中文利用big5是无法成功显示的~所以才会有造字程式说。

big5码的中文字编码对于某些资料库系统来说是很有问题的,某些字码例如‘许、盖、功’等字, 由于这几个字的内部编码会被误判为单/双引号,在写入还不成问题,在读出资料的对照表时, 常常就会变成乱码。不只中文字,其他非英语系国家也常常会有这样的问题出现啊!

为了解决这个问题,由国际组织ISO/IEC跳出来制订了所谓的Unicode编码系统, 我们常常称呼的UTF8或万国码的编码就是这个咚咚。因为这个编码系统打破了所有国家的不同编码, 因此目前网际网路社会大多朝向这个编码系统在走,所以各位亲爱的朋友啊,记得将你的编码系统修订一下喔!

阅读(1167) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~