【Solidity學(xué)習(xí)筆記】數(shù)據(jù)類型——整型(Integer)

一、類型介紹

1、有符號整型 int

舉個栗子:-1,+8

int分為int8、int16、int24 ......,8位一步,直到int256
如果后面的數(shù)字省略,則默認為int256
int8后面的8是什么意思呢?
即用8位二進制來存儲(其中左邊第1位用來表示 + - 符號),代表可存儲的數(shù)字范圍,如:
11111111 ~ 01111111,左邊第1位用來表示符號,1表示負,0表示正,
換算成十進制則為 -(1+ 2 + 4 + 8 + 16 + 32+ 64) ~ (1+ 2 + 4 + 8 + 16 + 32+ 64)
即可存儲 -127 ~ 127 之間 255 個數(shù)字。
也可以理解成存儲范圍為2的多少次方。

2、無符號整型 uint

舉個栗子:0,200

uint分為uint8、uint16、uint24 ......,8位一步,直到uint256
如果后面的數(shù)字省略,則默認為uint256
uint8代表可存儲的數(shù)字范圍,用8位二進制來存儲(左邊第1位不用來表示 + - 符號,即大于等于0的數(shù)),如:
00000000 ~ 11111111
即可存儲 0 ~ 255 之間 255 個數(shù)字。
也可以理解成存儲范圍為2的多少次方。

二、測試Demo

pragma solidity ^0.4.17;

contract Test {
    uint8 _a;

    function Test(uint8 a) {
        _a = a;
    }

    function setA(uint8 a) {
        _a = a;
    }

    function a() constant returns (uint8) {
        return _a;
    }

    function add(uint8 a, uint8 b) public constant returns(uint8) {
        return a + b; //測試輸入255,1試試,會報超出范圍的錯誤
    }

    function div() constant returns (uint z) { //做除法
        uint x = 9;
        uint y = 2;
        z = x / y;
        return z;
    }
}

思考:
為什么要定義這么多位數(shù)不同的類型?
答:根據(jù)存儲需要去定義最合適的存儲范圍,可節(jié)約內(nèi)存,提高程序運行速度。

三、整型字面量

contract Test
 {
    function test1() constant returns (uint) {
        //uint8 a = 2 ** 800; //超過了uint8的范圍,編譯會報錯
        uint8 a = 2 ** 800 - 2 ** 800 + 5; //這樣是OK的,主要是看結(jié)果
        return a;
    }
    function test2() constant returns (uint) {
        uint8 a = 111111111111111111111111111111 - 111111111111111111111111111000; //這樣也是OK的,只要結(jié)果不超過數(shù)據(jù)類型的范圍
        return a;
    }
    function test3() constant returns (uint) {
        //小數(shù)運算
        //在Solidity中,沒有float和double類型,做乘除法運算時,小數(shù)無條件舍棄。
        var c = 0.5*8;
        return c;
    }
  
}

總之,在計算過程中,字面量怎么計算都行,只要計算出來的結(jié)果不超過范圍,就可以這樣書寫,否則就會出錯。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容