区块链——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; } |
运行结果是:
与表格中的预测结果相一致