上一篇文章写到了二进制的加法,就是正数使用原码计算,负数使用补码计算。
那么二进制乘法是如何计算的呢?
我们都知道十进制的乘法,比如20.0*10=200.也就是小数点向右移动一位,如果是除以10的话,小数点就想左移动一位就可以了。
如果是二进制的话,也是同样的道理。只不过改成了2的幂次了。
例如:二进制的0b0000 0001 乘以 二进制 0b10 就是整体向左移动一位编程0b0000 0010 ,再说一个比较复杂的例子:0b0000 1111 * 0b0000 0111
0b0000 0111 代表是2^0 2^1 2^2 也就是0b0000 1111 分别向左移动1 位,2位和0位,然后把这三个数相加即可;
数字 | 移动 | 结果 |
---|---|---|
0b0000 1111 | 移动0位 | 0b0000 1111 |
0b0000 1111 | 移动1位 | 0b0001 1110 |
0b0000 1111 | 移动2位 | 0b0011 1100 |
最后结果 | 0b0110 1001 |
所以二进制乘法的过程就是通过移位和加法实现的。
aaa