计算机只能操作二进制数,也就是0和1。因此也不可能会使用+-*/。那计算机是如何实线加法运算的呢?
那这就要依靠位运算了!
一、位运算
1.与运算
1.1物理电路
串联电路中两开关,只有两开关都为1,电路才能连通。
1.2运算效果
and(&)
例如:101 & 110 = 100
2.或运算
2.1物理电路
电路并联上两开关,只要有一个开关置1,电路就连通了。

2.2运算效果
or(|)
例如:101 | 110 = 111
3.异或运算
3.1物理电路
这种电路,只有一个开关置1,电路才连通。

3.2运算效果
xor(^)
例如:101 ^ 110 = 011
4.非运算
4.1物理电路
电路开关置1,电路就不连通,电路开关置0,电路就连通。
4.2运算效果
not(~)
例如:101 ~= 010
5.左移
5.1运算效果
各二进制位全部左移若干位,高位丢弃,低位补0。

shl(<<)
例如:101 << 2 = 100
6.右移
2.1运算效果
各二进制位右移若干位,高位补0或符号位。
shr(>>)
例如:101 >> 2 = 001
二、二进制实现四则运算
1.加法运算
(1)加法运算与二进制异或运算有一点像,其不同的地方在于两个数同一位置都为1,这个时候应该进位。例如从右到左第三位得到的应该是10,异或就不会进位,这个时候就要做进一步处理了。

(2)在进一步处理的前提条件是判断是否有两个数的运算是否有进位,如果有进位,就要做进一步处理了。那如何判断是否有进位呢,这就可以用与运算了,如果与运算结果不为0,说明有了进位,否没有进位。

(3)当判断这个数有进位之后,就说明异或得到的结果不是加法运算的最终值,那么就需要把第二步得到的结果左移一位后再与第一步得到的结果进行异或。

(4)在上一步异或过程中,我们也害怕有进位,这样我们就要接着用与运算判断了。直到与运算结果为0,那么最终异或结果就是加法结果了。

2.减法运算
减法运算,其实就是加法,只是正数+负数,而负数要用补码进行表示。
其余运算步骤和加法相同。

3.乘法运算
x*y 就是y个x相加,利用上面的加法循环y次相加即可。
4.除法运算
x/y就是,x能够减去多少次y。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/132058.html