我们经常需要在源码中使用二进制(或十六进制)手动运算结果。尽管有些计算器可以进行二进制(或十六进制)运算,但是我们应该学会进行简单的二进制手算。十六进制运算非常困难,每个程序员都必须准备一个十六进制计算器(或者支持十六进制运算的计算器软件,比如Windows计算器或手机应用程序)。但是二进制数值的算术运算比十进制简单。
学会二进制手算非常重要,因为一些重要的算法会用到这些计算。本节将介绍如何进行二进制数值的加、减、乘、除运算,以及如何进行各种逻辑运算。
二进制加法很简单,只需要记住八条规则:
●0+0=0
●0+1=1
●1+0=1
●1+1=0并进位
●进位+0+0=1
●进位+0+1=0并进位
●进位+1+0=0并进位
●进位+1+1=1并进位
只要记住这八条规则,就可以计算任意两个二进制数值的和。下面是二进制加法的分步展示:
还有更多例子:
和加法一样,二进制减法的规则也是八条:
●0-0=0
●0-1=1并借位
●1-0=1
●1-1=0
●0-0-借位=1并借位
●0-1-借位=0并借位
●1-0-借位=0
●1-1-借位=1并借位
下面是二进制减法的分步展示:
还有其他一些例子:
二进制乘法也很简单,遵循和十进制乘法一样的规则,不过只用到了0和1:
●0×0=0
●0×1=0
●1×0=0
●1×1=1
下面是乘法的分步展示:
二进制除法和十进制除法算法相同(都是长除法)。图3-1展示了十进制除法的步骤。
图3-1 十迚制除法(3456/12)
同样,采用长除法的二进制除法更容易,不用每一步都去猜余数除以12够除几次或者12乘以多少才够减。在二进制除法的每一步中,除数除被除数得到的商要么是0要么是1,不用去管余数是多少。图3-2展示的是27(11011)除以3(11)的例子。
图3-2 二迚制长除法