程序员应该了解的计算机知识(二)——数制系统

引言

或许你会发现,对应任意一个二进制数(二进制序列)来说,如果末尾(右边第一位)的数码为1则该二进制数表示的是奇数,可以被2n-1整除;如果末尾(右边第一位)的数码为0则该二进制数表示的是偶数,可以被2n整除;将一个二进制数左移一位(右边补0)的结果是该数的2倍,即该数乘以2的结果;将一个无符号的数右移一位(左边补0)的结果是概述的1/2倍,即该数除以2的结果。(这个特点是一种算法的体现,具体不做多个解释)

2.二进制的转换2.1.二进制与十进制的转换

1.二进制转换为十进制

将二进制数值按位权进行展开并按十进制的进行求和运算,得到的结果即使十进制的数值。整数部分的幂为正,小数部分的幂为负。

2.十进制转换为二进制

将十进制数值的整数部分进行基数除法运算,即除以2,记下得到的余数作为二进制数值的最低位;得到的商如果不是0则继续除以2,记下得到的余数……;依次做除法直到得到的商为0停止,组合每一次除法的余数即是二进制数值的整数部分。将十进制数值的小数部分进行基数乘法运算,即乘以2,继续得到结果的整数部分作为二进制数值的最高位;得到的积如果还包含小数(没有达到指定的精确度)则用该小数部分继续乘以2,记下得到结果的整数部分……;依次做乘法直到得到的积不包含小数部分(或达到指定的精度)停止,组合每一次乘法结果的整数部分即为二进制数值的小数部分。最后以小数点进行拼接即可。

2.2.二进制与其它进制的转换

二进制与其他进制的转换可以借助十进制为桥梁,先将二进制数值转换为对应的十进制数值,然后再将十进制数值转换为对应的数制系统的数值。或者先将其他进制数值转换为对应的十进制数值,然后再将十进制数值转换为对应的二进制数值。

二进制转换为2K(K为正整数)进制可以使用位划分法进制转换,以二进制数值中的小数点为原点,分别将整数部分和小数部分按K位进行划分,不足K位可以补0;然后再将每一个K位转换成一个2K进制的数值(按二进制进行位权展开,按2K进制进行求和运算);最后将每一位数字按顺序进行连接即得到对应的2K进制的数值。2K(K为正整数)进制转换为二进制时可以使用按位转换法进行转换,将2K进制的每一位转换为K位的二进制数值(使用以2为基数的基数除法进行转换),然后将得到的数值按顺序连接起来即为对应的二进制数值。

附录:二进制、八进制、十进制、十六进制数值转换对照表

二进制八进制十进制十六进制

00000000

00010111

00100222

00110333

01000444

01010555

01100666

01110777

10001088

10011199

10101210A 或 a

10111311B 或 b

11001412C 或 c

11011513D 或 d

11101614E 或 e

11111715F 或 f

10000201610

总结

数制系统的一种相对性的概念,而且任何一种数制系统都有其独到的用处。生活中都是用的标准的十进制,而如果要入行IT,至少要对二进制有所了解,如果要进军编程必须要对八进制、十六进制有所了解。本文中略有提到规则,其只是数码个数不同、位权不同而已,可使用位权求和法将低进制数值转换为高进制数值;使用基数乘除法将高进制数值转换为低进制数值,其实这都是数学概念。计算机使用的是二进制,相对比较简单。

再说后话,本篇的内容或许对大多数的人来说都是“班门弄斧”,,笔者是半道入行IT的,对高数、计算机基础都了解甚少(不明说,你懂得),这里笔者想用一种通俗的方式来表述个人总结的知识。所以希望大家不要见笑,多多喷墨……

本文出自 “阿酷呆” 博客,请务必保留此出处

画龙画虎难画骨,知人知面不知心。

程序员应该了解的计算机知识(二)——数制系统

相关文章:

你感兴趣的文章:

标签云: