solidity智慧合約[7]-整型與運算
阿新 • • 發佈:2018-11-21
整型變數
整數是現實中處理最多的單位,在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 |
//1、加 |
整型溢位
整數如果處理不當,會發生溢位效應。如下面的函式overflow。
函式的功能為執行+1的操作。 當傳遞4、返回5. 傳遞200,返回201,但是當傳遞255的時候,會返回0,這是由於發生了溢位。
要理解溢位的本質,需要明白整型在計算機中的儲存方式。
1 |
// 1111 1111 |
整型在底層的儲存方式
計算機最小的儲存單位為位
,儲存0或者1。 下面的圖片描述了以位標示的二進位制程式碼101轉換為10進位制後的計算方式。
底層儲存方式
以此類推,可知道,uint8在記憶體中佔8位,最大值為全部都儲存1的時候,轉換為10進製為255。
uint8最大值
當加一之後,1111 1111
變為了10000 0000
但是隻能儲存8位,所以截斷之後,變為了0000 0000
所以返回結果為0
版權宣告: 本部落格所有文章除特別宣告外,均採用 CC BY 4.0 CN協議 許可協議。轉載請註明出處!