solidity[7]-整型与运算
2018-11-10 智能合约 solidity语法 solidity, 以太坊, 智能合约 4 评论 字数统计: 494(字) 阅读时长: 2(分)
整型变量
整数是现实中处理最多的单位,在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协议 许可协议。转载请注明出处!
郑建勋(jonson)区块链工程师 & Web工程师
灾难总是接踵而至,这正是世间的常理。你以为只要哭诉一下,就会有谁来救你吗?如果失败了,就只能说明我不过是如此程度的男人。