C编程从入门到实践
上QQ阅读APP看书,第一时间看更新

1.1.3 二进制

二进制是计算机技术中广泛采用的一种数制,是使用0和1两个数码来表示的数。二进制的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,这是由18世纪德国数理哲学大师莱布尼兹发现的。当前的计算机系统使用的基本上都是二进制系统,数据在计算机中主要是以补码的形式进行存储的。计算机中的二进制是一个非常微小的开关,用“开”来表示1,用“关”来表示0。因为它只使用0、1两个数字符号,所以非常简单方便,易于用电子方式来实现。

下面介绍如何将十进制数转换成二进制数。

(1)把正整数转换成二进制。

转换原则是除以2取余,然后倒序排列,高位补零。也就是说,将正的十进制数除以2,得到的商再除以2,依次类推,一直到商为0或1,然后在旁边标出各步的余数,最后倒着写出来,高位补零即可。例如,将十进制数字42转换为二进制的步骤为:42除以2得到的余数连在一起为010101,然后将得到的余数倒着排一下就会得到数字42,所对应的二进制数是101010。但是因为在计算机内部表示数的字节单位是定长的(如8位、16位或32位),所以当位数不够时,需要在高位补零。十进制数42转换成二进制数的结果是101010,它的前面缺少两位,因此将十进制数42转换成二进制数的最终结果是:00101010。

(2)把负整数转换成二进制。

转换原则是先将对应的正整数转换成二进制,最后对二进制数取反,最后将结果加1。以十进制负整数-42为例,将42的二进制形式(00101010)取反得到的结果是11010101,然后再加1的结果是11010110。所以负整数-42转成二进制数的最终结果是:11010110。

(3)把二进制整数转换成十进制。

转换原则是先将二进制数补齐位数。如果首位是0则代表它是正整数;如果首位是1则代表它是负整数。先看首位是0的正整数,补齐位数以后,得到n×2m的计算结果。其中,上标m表示二进制数字的位数,n表示二进制的某个位数。对于二进制数中的各位分别计算n×2m,然后将计算结果相加得到值的就为十进制数。比如将二进制数1010转换为十进制数的过程如下。

所以将二进制数1010转换为十进制数的结果是10。

如果要转换的二进制数补足位数后首位为1,那么表示这个二进制数是负整数。此时,就需要先取反,然后再进行换算:例如二进制数11101011的首位为1,这时应先取反得到00010100,然后按照上面的计算过程得出10100对应的十进制数20,所以二进制数11101011对应的十进制数为-20。