计算机科学笔记(一) 进制转换与码制转换

进制转换与码制转换这些东西在上刚大学的时候回作为计算机基础,老师都会照本宣科的念一遍,为的是让你夯(zhi)(nan)(er)(tui)

当然我默认你看我的笔记只是为了快速复习一下,所以像逻辑门那么简单的知识就不再重复了哈。

1.进制转换

码制转换在计算机里主要是十进制,二进制,八进制和十六进制。由于计算机只是认识二进制,而我们对十进制比较敏感,所以人机交互的翻译部分自然需要我们来完成了。

原理的话:说实话,我也不是很清楚,可能会牵扯到数论的部分吧,我既不是计算机专业也不是数学专业,如果你非要弄明白,我推荐你看一下高德纳的《具体数学》和《计算机操作系统》,这两块砖头一定会让你酣畅淋漓。

首先都会讲十进制和二进制的转化,方法很多,不过我只介绍我用着最顺手的。

1.1 十进制转换二进制
1.1.1 整数的取K除法:

这个是十进制整数转换成任意进制的方法,如果要转化成二进制,那么这个方法就叫作取2除法。

具体方法就是:对十进制数不断对2进行整除,然后取其余数作为二进制的结果。

计算机科学笔记(一) 进制转换与码制转换_第1张图片
十进制转二进制
1.1.2 小数的乘法

对于十进制小数,只需要不断乘2,然后取其证书部分,然后作为二进制小数的结果。

计算机科学笔记(一) 进制转换与码制转换_第2张图片
小数转二进制
1.2 二进制转化十进制

二进制转化成十进制,只需要按权重展开即可。对于其他进制也是如此。

1.3 常用十六进制作为二进制和十进制转化的媒介
计算机科学笔记(一) 进制转换与码制转换_第3张图片
十进制转十六进制

十六进制和二进制转换很简单,2^4等于16,所以每位十六进制都可以转化成4位二进制。

计算机科学笔记(一) 进制转换与码制转换_第4张图片
十六进制转二进制

2.码制转换

程序里常用的编码用ASCII, UTF-8, Unicode,其中ASCII共128个,总共分为两类,非打印类和打印类。非打印类33个,主要用于控制操作(响铃,删除,回车,换行),打印类95个,主要包数字符,大小写字母。Unicode字符所占内存是ASCII的2倍。

当然我要说的不是这些编码,如果你有兴趣的话,可以取看看《编码》这本书,蛮不错的计算机入门书。

这里要说的是计算机底层的原码,补码,反码,记得MIT一位教授说过数学一方面是纯粹的理论计算,另一方面尝试把数学描述的很美妙。我觉得计算机也是如此,当你明白了系统底层的原理,明白为什么这样运作的时候,那些工具用起来会更加得心应手。当然前提你得先去了解那些工具,如果想深入研究系统底层,那么先学会用画画IC的仿真,焊接一点电路板,玩玩Arduino;如果想写编程语言的库,那么先熟练掌握查阅API的能力。就好像先去实践,然后带着理论深入研究,那么你就会发现这个不仅仅是科学,更是一门哲学,也许有些时候它更像一门玄学。

描述一个数值,就要知道它的大小和数值。关于大小,在进制转换部分已经提到,不在赘述了。那数值呢?正数还是负数?我们用0来表示正数,1来表示负数。这个一部分人把这个称为机器数

2.1接下来说原码,反码,补码

把输入的十进制转换成二进制数值,这个就是原码。接下来说补码,计算机计算数字的时候都是用补码来计算,因为计算的时候数字可能是正数,可能是负数,那么这样的话,用原码就很麻烦,还有符号位,所以就在原码的基础上做了一种变换,如果你学过数字电子的话,你一定记得有块芯片叫做比较器。所以正数的补码等于原码,负数补码等于取反加一。而取反这个过程,我们意外收获了补码

2.2比较器的拓展
计算机科学笔记(一) 进制转换与码制转换_第5张图片
比较器
计算机科学笔记(一) 进制转换与码制转换_第6张图片
补码
计算机科学笔记(一) 进制转换与码制转换_第7张图片
比较器

你可能感兴趣的:(计算机科学笔记(一) 进制转换与码制转换)