区块链——Solidity智能合约基础实战(四)
底层位运算
位运算的操作有6个,分别是&(与)、|(或)、~(非)、^(异或操作,相同为0,不同为1)、<<、>>
操作数1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
|
操作数2 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 运算结果 |
& | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 7 |
~ | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 252 |
^ | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 7 |
<< | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 6 |
>> | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
注意:用pure的话不能访问到函数外面的变量,所以要用view
将上述的表格转化为代码的形式为:
uint8 a = 3; uint8 b = 4;
function logicaland() view public returns(uint){ return a & b; }
function logicalor() view public returns(uint){ return a | b; }
function logicalinvert() view public returns(uint){ return ~a; } function logicaloxor() view public returns(uint){ return a^b; } function logicalmoveLeft() view public returns(uint){ return a<<1; } function logicalmoveRight() view public returns(uint){ return a>>1; } |
运行结果是:
与表格中的预测结果相一致