温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

solidity智能合约[7]-整型与运算

发布时间:2020-04-15 22:47:10 来源:网络 阅读:457 作者:jonson_jackson 栏目:开发技术

整型变量

整数是现实中处理最多的单位,在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进制后的计算方式。

solidity智能合约[7]-整型与运算

底层存储方式

以此类推,可知道,uint8在内存中占8位,最大值为全部都存储1的时候,转换为10进制为255。

solidity智能合约[7]-整型与运算

uint8最大值

当加一之后,
1111 1111
变为了
10000 0000
但是只能存储8位,所以截断之后,变为了
0000 0000

所以返回结果为0

  • 本文链接: https://dreamerjonson.com/2018/11/10/solidity-7/

  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY 4.0 CN协议 许可协议。转载请注明出处!

solidity智能合约[7]-整型与运算

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI