solidity智能合约[7]-整型与运算
整型變量
整數是現實中處理最多的單位,在solidity中的整數類型有int和uint,int類型可以存儲負數,uint類型只能夠存儲非負數。
int類型:int8,int16,int24,int32…int256
uint類型:uint8,uint16,uint24,uint32…uint256
后面的數字代表的是計算機的最小存儲單位:位。 1個字節代表8位。類型以一個字節遞增,最大到256位,也就是32個字節。
int == int256
uint == uint256
整型運算
1、加
2、減
3、乘
4、除
5、取余數
6、平方
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | //1、加 function add(uint a,uint b) public pure returns(uint){ ? ? return a+b; } //2、減 function sub(uint a,uint b) public pure returns(uint){ ? ? return a-b; } //3、乘 ?function cheng(uint a,uint b) public pure returns(uint){ ? ? return a*b; } //4、除 function chu(uint a,uint b) public pure returns(uint){ ? ? return a/b; } //5、取余數 ? function yu(uint a,uint b) public pure returns(uint){ ? ? return a%b; } //6、平方 function pingfang(uint a,uint b) public pure returns(uint){ ? ? return a**b; } |
整型溢出
整數如果處理不當,會發生溢出效應。如下面的函數overflow。
函數的功能為執行+1的操作。 當傳遞4、返回5. 傳遞200,返回201,但是當傳遞255的時候,會返回0,這是由于發生了溢出。
要理解溢出的本質,需要明白整型在計算機中的存儲方式。
| 1 2 3 4 5 | // 1111 1111 //10000 0000 function overflow(uint8 a) public pure returns(uint8){ ? ?return a +1; } |
整型在底層的存儲方式
計算機最小的存儲單位為位,存儲0或者1。 下面的圖片描述了以位標示的二進制代碼101轉換為10進制后的計算方式。
底層存儲方式
以此類推,可知道,uint8在內存中占8位,最大值為全部都存儲1的時候,轉換為10進制為255。
uint8最大值
當加一之后,
1111 1111
變為了
10000 0000
但是只能存儲8位,所以截斷之后,變為了
0000 0000
所以返回結果為0
本文鏈接:?https://dreamerjonson.com/2018/11/10/solidity-7/
版權聲明:?本博客所有文章除特別聲明外,均采用?CC BY 4.0 CN協議?許可協議。轉載請注明出處!
轉載于:https://blog.51cto.com/13784902/2320198
總結
以上是生活随笔為你收集整理的solidity智能合约[7]-整型与运算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql无法导入函数和存储过程解决方法
- 下一篇: 交易猫怎么联系卖家