逻辑有广义和狭义之分。广义逻辑既包括形式逻辑,又包括辩证逻辑。狭义的逻辑专指形式逻辑。其中不矛盾律,排中律和同一律总称为形式逻辑的基本规律。而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的底层位运算之后,编译部署合约调用各个函数对结果进行验证

下面是该实验的配套教学视频: