整型变量

整数是现实中处理最多的单位,在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、平方

123456789101112131415161718192021222324
//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,这是由于发生了溢出。
要理解溢出的本质,需要明白整型在计算机中的存储方式。

12345
// 1111 1111//10000 0000function 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]-整型与运算相关推荐

  1. Solidity智能合约库:区块链工程师的随身工具箱

    编者荐语: Solidity使用起来不如其他语言那般丝滑顺畅?安全事故难以避免?社区迎来适用于FISCO BCOS的Solidity智能合约库,轻松破解合约的各种小难题,让合约开发更加快速高效.省时省 ...

  2. 微众银行Solidity智能合约库:区块链工程师的随身工具箱

    区块链技术在经历了十余年的发展后,渐呈"燎原之势",不断在各行业落地生根.但同时,从技术的角度看,区块链应用开发仍然有着较高的门槛,存在不少痛点.为了提升应用开发各环节的用户体验, ...

  3. 以太坊solidity智能合约-生成随机数

    Solidity随机数生成 在以太坊的只能合约中,没有提供像其他面向对象编程一样的生成随机数的工具类或方法.其实,所谓的随机数也是伪随机的,没有哪一种语言能够真正的生成随机数. 对于solidity来 ...

  4. solidity智能合约implicit conversion异常

    问题场景 在使用^0.5.10版本的solidity时,如果使用this关键字会出现以下问题. 代码: require(tokenContract.balanceOf(this) >= _num ...

  5. Solidity 智能合约入门

    Solidity 智能合约入门 存储合约示例 将一个数据放置在链上 // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.4.16 &l ...

  6. solidity智能合约中tx.origin的正确使用场景

    简介 tx.origin是Solidity的一个全局变量,它遍历整个调用栈并返回最初发送调用(或事务)的帐户的地址.在智能合约中使用此变量进行身份验证会使合约容易受到类似网络钓鱼的攻击. 但针对tx. ...

  7. web3j用于solidity智能合约maven插件

    web3j maven插件用于基于solidity智能合约文件创建java类. 用法 插件的基本配置将从src/main/resources获取solidity文件,并将java类生成到src/mai ...

  8. 基于以太坊的次高价盲拍solidity智能合约(二)

    基于以太坊的次高价盲拍solidity智能合约(二) 4.揭标 5.第三方仲裁人终结拍卖 4.揭标 揭标的过程应该是本智能合约中最复杂且具有灵魂的关键步骤. 当每个发起过竞标的用户,利用该标的隐式价格 ...

  9. 微众银行《Solidity智能合约库》区块链工程师的随身工具箱之初体验相当的nice

    文章目录 一.智能合约库简介 二.痛点及解决方式 痛点一:计算可能溢出 痛点二:转换不够便捷 痛点三:数组操作不够丰富 痛点四:不提供字符串内置操作 痛点五:高级数据结构不完备 总结 一.智能合约库简 ...

最新文章

  1. 解决在onCreate()过程中获取View的width和Height为0的4种方法
  2. SQL Server 2008 缩小数据库日志
  3. 如何用消息系统避免分布式事务?
  4. Win64 驱动内核编程-34.对抗与枚举MiniFilter
  5. 【Android Gradle】安卓应用构建流程 ( 资源文件编译 )
  6. OSS- OSS brower 登陆失败
  7. 单步调试时遇到cout和cin会自动跳到ostream文件中的解决方案
  8. 阿姨帮万勇:O2O产品的颠覆与布局,阿姨帮未来发展战略独家披露
  9. 安装Xen Server创建虚拟机
  10. json序列化后日期如何变回来
  11. 谁来结束 GUI 程序?| CSDN 博文精选
  12. linux svn官网,linux svn
  13. Android-基本控件和详解四种布局方式
  14. java 封装和继承
  15. 小甲鱼python课后题共多少讲_小甲鱼python视频第七讲(课后习题)
  16. 浏览器放大缩小,页面布局不变,浏览器放大百分比,页面放大到左上角,浏览器缩小百分比,页面缩小至中间(类似csdn官网效果)
  17. 阿里云服务器搭建Minecraft我的世界配置选择
  18. 【VMware】下安装OSX10.10-Yosemite【Mac】系统
  19. K-means聚类算法的应用——Python数据工程No.5
  20. 游戏鼠标的dpi测试软件,高DPI无用?一分钟测试你所需的鼠标DPI

热门文章

  1. HDU 4135 Co-prime 容斥原理
  2. 自由还是霸权? TPP将撤销政府的数据主权
  3. 如何修改ECShop发货单查询显示个数
  4. linux下挂载ntfs(windows)文件系统
  5. 【转】我们今年二十三四岁。。。
  6. C#3.0语言规范new [Unified C# 3.0 Specification Now Available]
  7. sql语句练习(一)
  8. python文件管理
  9. 阿里云mariadb无法启动问题
  10. CSS3定位和浮动详解