二进制算法加法
1. 二进制加减法运算法则
减法运算其实是可以由加法运算替代的,我们上面已经介绍过了无符号和补码的非,其实很多CPU是没有减法运算器的,它们都是将减数进行逆运算以后送入加法器,然后进行加法运算,这样得出来的结果就是减法运算最终的结果。
比如我们考虑一种简单的情况,当w = 4时的无符号减法运算,对于 5 - 4这个减法运算来说,我们可以由 5 + 4-1(其中4-1是4的逆元的意思,不是1/4的意思)来替代这个减法运算。
为了更加直观,LZ带各位来算一下,首先4的逆元根据上面的公式可以得到为 4-1= 24- 4 = 12 。那么我们现在需要对5和12进行加法运算,它们的位表示分别为 0101和1100,结果为10001,也就是十进制17的位表示。不过由于我们的w = 4,因此截断之后结果为0001,也就是十进制的1。最终可以得到 5 - 4 = 1。
对于5 - 4来说,是考虑的结果为正的情况。或许有的猿友会对结果为负或者说是无符号数溢出的情况下有疑问,因此LZ这里对这种情况也做一个简单的介绍。我们考虑一个简单的计算 0 - 1,我们可以得到1-1= 24- 1 = 15。此时对0和15进行加法运算,他们的位表示分别为0000和1111,结果为1111。
看到这里估计有的猿友会奇怪了,这怎么回事,0 - 1 = 15?
当然不是,这个结果其实是正确的。考虑使用补码编码来解析1111这个位表示,它代表的值就是-1。15是1111这个位表示在无符号编码情况下的解析结果。
因此LZ这里也给出一个公式,就是对于两个整数x和y来说,x - y = x + y-1。这里需要特别说明的是,这个公式代表的意义是位表示,而不是实际的数值。
2. 二进制加减法运算法则是什么
二进制加减法运算法则是:0+0=0,0+1=1 ,1+0=1, 1+1=10(向高位进位);二进制的减法:0-0=0,10-1=1(向高位借位) 1-0=1,1-1=0 (模二加运算或异或运算) 。二进制的乘法:0 * 0 = 00 * 1 = 0,1 * 0 = 0,1 * 1 = 1 二进制的除法:0÷0 = 0,0÷1 = 0,1÷0 = 0 (无意义),1÷1 = 1 。
逻辑运算二进制的或运算:遇1得1二进制的与运算:遇0得0二进制的非运算:各位取反。0、1是基本算符。因为它只使用0、1两个数字符号,非常简单方便,易于用电子方式实现。从右往左第一位表示2的0次方,第二位表示2的1次方,第n位表示2的n-1次方。可以将1理解为有,0理解为无。
二进制的转换:
十进制转换为二进制的方法是:整数转换,采用连续除基取余(短除法),逆序排列法,直至商为0。小数转换:采用连续乘基(即2)取整,顺序排列法。例(0.8125)10=(0.1101)。
具体的步骤:0.8125*2=1.625,0.625*2=1.25,0.25*2=0.5,0.5*2-=1.0,则正向取整得(0.1101)2。
以上内容参考:网络-二进制运算法则