逻辑有广义和狭义之分。广义逻辑既包括形式逻辑,又包括辩证逻辑。狭义的逻辑专指形式逻辑。其中不矛盾律,排中律和同一律总称为形式逻辑的基本规律。而Solidity的逻辑运算既是专指形式逻辑,对它的运用能在一定的程度避免合约出现自相矛盾的逻辑错误。
实验目的
1. 了解Solidity的逻辑运算。
2. 明白Solidity的底层位运算。
以下是本次实验所用的测试代码,请使用remix编辑器完成该实验
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract Math{
uint8 a = 3;
uint8 b = 4;
// LogicAnd函数返回的值是? (1)
function LogicAnd() public view returns(uint8){
return a&b;
}
//LogicOr函数返回的值是? (2)
function LogicOr() public view returns(uint8){
return a|b;
}
//reverse函数返回的值是? (3)
function reverse() public view returns(uint8){
return ~a;
}
//xor函数返回的值是? (4)
function xor() public view returns(uint8){
return a^b;
}
//leftShift函数返回的值是? (5)
function leftShift() public view returns(uint8){
return a<<1;
}
//rightShift函数返回的值是? (6)
function rightShift() public view returns(uint8){
return a>>1;
}
}
实验要求
1. 首先我们对各函数进行初步判断,完成下列表格
a=3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | |
b=4 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | |
位与(有0则为0) | & | |||||||||
位或(有1则为1) | | | |||||||||
位非(1则0,0则1) | ~a | |||||||||
位异或(相同则为1,不同则为0) | ^ | |||||||||
左移(整体左移,低位补零) | a<<1 | |||||||||
右移(整体右移,高位补零) | a>>1 | |||||||||
256 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
2.查看上面的代码,在理解solidity的底层位运算之后,编译部署合约调用各个函数对结果进行验证
下面是该实验的配套教学视频:
