solidity[7]-整型与运算

本文详细介绍了Solidity中的整型变量与运算,包括int和uint类型的区别,以及加、减、乘、除、取余数和平方等运算的实现。通过具体的函数示例,解释了整型溢出的概念及其在计算机底层存储方式的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

郑建勋(jonson)区块链工程师 & Web工程师

灾难总是接踵而至,这正是世间的常理。你以为只要哭诉一下,就会有谁来救你吗?如果失败了,就只能说明我不过是如此程度的男人。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值