数值类型乘除的优化位运算原理

文章目录

位运算

1.&(按位与)
规则:
只有两个操作数对应位同为1时,结果为1,其余全为0. (或者是只要有一个操作数为0,结果就为0)。

举例:
5 & 10 = ?
10 的二进制为:1010
5 的二进制为:0101
则 5 & 10 的二进制为 0000,完整的运算为 5 & 10 = 0

2.|(按位或)
‘ | ’ 符号的作用是对运算符两侧以二进制表达的操作符按位分别进行’或’运算。
规则:
只有两个操作数对应位同为1时,结果为1,其余全为0. (或者是只要有一个操作数为1,结果就为1)。

举例:
5 | 10 = ?
10 的二进制为:1010
5 的二进制为:0101
则 5 | 10 的二进制为 1111,完整的运算为 5 | 10 = 15

3.^(按位异或)
‘ ^ ’ 符号的作用是对运算符两侧以二进制表达的操作数按位分别进行’异或’运算。
规则:
仅当两个操作数不同的时候,对应的输出结果才为1,否则为0。

举例:
5 ^ 10 = ?
10 的二进制为:1010
5 的二进制为:0101
则 5 ^ 10 的二进制为 1111,完整的运算为 5 ^ 10 = 15

4.~(按位非)
‘ ~ ’ 符号的作用是将各位数组取反。
规则:
全部的0变为1,1变为0。

在表示正负数的时候是从最高位看的,最高位如果为 ‘ 1 ’ 则为负数,如果是 ‘ 0 ’ 则是正数。
但是如果负数单纯是把最高位变为1的话,在运算中会出现不是我们想要的值。所以引入了:‘原码’,‘反码’,‘补码’。
正数的‘原码’,‘反码’,‘补码’都一样。
负数的‘反码’是对除了符号位(最高位)的‘原码’取反,而‘补码’是对‘反码’ + 1,而计算机所采用的就是‘补码’的方式。

5.<<(左位移运算符)
‘ << ’ 符号的作用是将一个运算对象的各二进制位全部左移若干位。
规则:
左边的二进制位丢弃,右边补0。

举例:
10 << 3 = ?
10 的二进制为:0000 0000 0000 1010
移位后为:0000 0000 0101 0000 (80)
则 10 << 3 = 80

6.>>(右位移运算符)
‘ >> ’ 符号的作用是将一个运算对象的各二进制位全部右移若干位。
规则:
正数左补0,负数左补1,右边丢弃。

举例:
10 >> 3 = ?
10 的二进制为:0000 0000 0000 1010
移位后为:0000 0000 0000 0001
则 10 >> 3 = 1

优势

1)运行速度最快
2)当我们进行乘除计算时,计算机是将乘法改变成加法进行循环计算,例如25×100是100个25相加,所以,我们可以利用位运算对其进行性能优化,
100=64+32+4,相当于将25左移6位,加25左移5位,加25左移2位.这样加法次数明显减少。性能大幅提高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值