一起学solidity写智能合约——整型(uint和int)

news/2024/5/19 20:07:34/文章来源:https://blog.csdn.net/qq_57309855/article/details/127349858

前言

整型一般用的比较多,会在各个合约中见到整型的存在,那么这个类型也是学习路上不可或缺的

环境:

remix编译器点我跳转

正文

我们在sol中遇得到很多类型为整型的数据,所以我们的sol提供了两种数据类型的整型:

有符号的整数(int):这里我们就可以理解为正负值的整数

无符号的整数(uint):无符号整数,这里就是只有正数和0的存在

为了有更好的内存控制sol提供了,int8、int16、int32等、一直到int256的无符号的整型类型

同样我们的无符号整数也是一样,uint8、uint16、uint32......uint256

那么在选择上面我们需要注意的是,0~256位的数据,我们使用uint8就可以了,那么存储有符号的负数到正数的-128~127我们使用int8,根据实际情况我们往上走即可。

有些同学会好奇,这个8、16、32......256是什么意思呢?

这里就是我们的二进制,因为我们的计算机是由0101的代码构成的所以底层存储逻辑就是二进制的,那么这里00000000这个在二进制中代表0,11111111这个在二进制中代表256,心细的同学会发现这个数字的个数是八位,就是这里,所以我们的存储就是这样子存储的

int与运算符

整数类型支持的运算符有三种比较运算符、位运算符、算数运算符

比较运算符

<=(小于等于)<(小于)==(等于)!=(不等于)>=(大于等于)>(大于)

位运算符

&&(与)||(或)^(异或)~(位取反)

算数运算符

+-一元运算符“-”一元运算符“+”*/%**<<>>

一遍看下来估计就是左移右移的操作有问题这里解释一下

左移:a << b 可以理解为a乘以2的b次方

右移:a >> b 可以理解为a除以2的b次方

运算符使用方法如下:

uint256 public _uintNum = 12345; //整数                         结果:12345

uint256 public _uintNum1 = _uintNum + 1; //加法            结果:12346

uint256 public _uintNum2 = 2**2; // 指数                          结果:4

uint256 public _uintNum3 = 7 % 2; //取余                        结果:1

bool public _boolnum = _ uintNum2 > _uintNum3;//判断 结果: true

注意事项

声明方式

int8 a = -1;

uint16 b = 1;

uint c ;

int d ;

整数运算时如果遇到常量就会被截断,如果是常量就不会,常量就是在定义时就有值且不改变的量,如果遇到0的时候是非法的,会报错。

左右位移就是移二进制的位置,现在我们有10000这样一位二进制数换成十进制就是32,那么我们右移就是1000,左移同理

不能进行负以为,就是不能变成负的

负数不能进行指数操作就是“**”

pragma solidity ^0.4.23; //表示编译器的版本,^代表大版本为4即可
contract UintTest{ //创建一个合约 自定义合约名为UintTest
uint a = 10; // 定义一个变量a为10
uint b = 2; // 定义一个变量b为2
function getUint() public view returns(uint){// 定义一个函数 函数名为getUint 权限为公共 只读 返回一个uint类型 
uint sum = a ** b + 3 % 2;// 定义一个uint类型使用运算符a的b次方加3取余2最后的结果为101
return sum;// 返回sum
}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_401952.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于物联网的户外环境检测装置设计

目 录 摘 要 1 Abstract 2 第1章 绪论 4 1.2 选题背景及意义 4 1.2 研究现状 4 1.3本课题的发展趋势和研究可行性 5 1.4研究主要内容 5 第2章 基于物联网的户外环境检测装置设计概述和相关原理 6 2.1 系统的概述 6 2.1.1 总体设计方案 6 2.1.2 总体框图 6 2.2 相关理论 7 2.2.1…

算法优化 | MATLAB实现BO-RF贝叶斯优化随机森林算法

算法优化 | MATLAB实现BO-RF贝叶斯优化随机森林算法 目录 算法优化 | MATLAB实现BO-RF贝叶斯优化随机森林算法效果一览基本介绍模型结构程序设计学习总结参考资料效果一览 基本介绍 针对集成学习参数众多,缺乏高效准确的参数寻优方法的问题,提出了基于贝叶斯优化随机森林方法…

k8s 中的 service 如何找到绑定的 Pod 以及如何实现 Pod 负载均衡

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

RK3588+AI工业视觉检测设计方案

本文详细介绍了基于Rockchip RK3588芯片的AI边缘计算主板外形、尺寸、技术规格&#xff0c;以及详细的硬件接口设计参考说明&#xff0c;使客户可以快速将RK3588边缘计算主板应用于工业互联网、智慧城市、智慧安防、智慧交通&#xff0c;智慧医疗等人工智能领域的智能终端设备。…

自定义ClassLoader

一&#xff0c;如何自定义classLoader&#xff1f; 需要使用加载器的loadClass方法&#xff1a;ClassLoader().loadClass 查看loadClass方法源码 首先检查加载&#xff0c;调用父5加载器开始双亲委派机制&#xff0c; 如果没有加载到&#xff0c;就调用findClass方式 打开发现…

JVM加载class文件的原理机制

JVM加载class文件的原理机制 JVM中类的装载是由类加载器(ClassLoader)和它的子类来实现的&#xff1b; 当Java程序需要使用某个类时&#xff0c;JVM会确 保这个类已经被加载、连接(验证、准备和解析)和初始化。 类的加载是指把类的.class文件中的数据 读入到内存中&#xff0c…

神经网络中各个隐藏层,深度神经网络隐藏层数

1、神经网络的隐含层节点数怎么设置啊&#xff1f;比如要设置18层隐含节点数&#xff01;跪求&#xff0c;工作急用&#xff01; 隐层一般是一层或两层&#xff0c;很少会采用三层以上&#xff0c;至少隐层的节点数确定&#xff0c;一般有以下几种方法&#xff1a;1、有经验的…

【ArchSummit】通过ArchSummit 全球架构师峰会对企业数字化转型的思考

前言 &#x1f4eb; 作者简介&#xff1a;小明java问道之路&#xff0c;专注于研究 Java/ Liunx内核/ C及汇编/计算机底层原理/源码&#xff0c;就职于大型金融公司后端高级工程师&#xff0c;擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。 &a…

生命在于学习——Socket编程(偏安全方面)

本篇文章仅用于学习记录和交流&#xff0c;不得用于其他违规用途&#xff0c;产生的不良后果&#xff0c;自己负责。 一、Socket介绍 首先socket (套接字) 是工作在应用层和传输层之间一个抽像层 , 为什么要有他呢 ? 虽然我们已经有了ipport可以和世界上任意一台计算机上的软…

chainlink 小实战 web3 “捐助我”项目合约及前端交互——关于 《Patrick web3 course Lesson 7-8 》课程代码中文详解

FundMe lesson 的 示例 本质上是一个合约上对 eth 接收和发送的演示&#xff0c;但这个演示增加了前端 ethers 的交互&#xff0c;以及对 chainlink 预言机喂价的使用。 总体来说是一些 Defi 项目上的某一块功能的缩影&#xff0c;不过总体来说还是挺简单的。 若不会 chainli…

(附源码)计算机毕业设计SSM基于JAVA人事管理系统

&#xff08;附源码&#xff09;计算机毕业设计SSM基于JAVA人事管理系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术…

Android系统10 RK3399 init进程启动(四十二) init.rc文件解析逻辑

配套系列教学视频链接&#xff1a; 安卓系列教程之ROM系统开发-百问100ask 说明 系统&#xff1a;Android10.0 设备&#xff1a; FireFly RK3399 &#xff08;ROC-RK3399-PC-PLUS&#xff09; 前言 Android init启动的时候会解析init.rc&#xff0c; 当然还有很多其他rc文…

DPR和REALM论文笔记

DPR(2020 EMNLP) 该论文的模型主要是一个双塔结构如下所示&#xff1a; 整个模型的训练数据D包含m个例子&#xff0c;其中每个例子由一个问题qiq_iqi​、一个相关段落pip_i^pi​、n个不相关段落pi,1−,⋯,pi,n−p_{i,1}^-,\cdots,p_{i,n}^-pi,1−​,⋯,pi,n−​ D{⟨qi,pi,pi,…

JUC-3.三大辅助类/阻塞队列/forkjoin

目录 一、三大辅助类 1.1 CountDownLatch 1.2 CyclicBarrier 1.3 Semaphore 二、阻塞队列 2.1 概念 2.2 常用的阻塞队列 三、forkjoin 一、三大辅助类 JUC 中提供了三种常用的辅助类&#xff0c;通过这些辅助类可以很好的解决线程数量过 多时 Lock 锁的频繁操作。…

【ASM】字节码操作 转换已有的类 Class Transformation 原理 【重要】

文章目录 1.概述2. Class-Reader/Visitor/Writer2.1建立联系2.2执行顺序2.3执行顺序的代码演示3.串联的Field/MethodVisitors4. Class TransformationJ4F5.总结1.概述 上-篇文章:【ASM】字节码操作 转换已有的类 ClassReader 删除方法 添加方法 2. Class-Reader/Visitor/Wri…

(附源码)计算机毕业设计SSM基于Java家庭财务管理系统

&#xff08;附源码&#xff09;计算机毕业设计SSM基于Java家庭财务管理系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技…

《视觉SLAM十四讲》 编译报错问题汇总 Ubuntu20.04

Ubuntu 20虚拟机环境安装 高翔原视频是ubuntu14.04&#xff0c;看了一下&#xff0c;有很多库都有兼容问题&#xff0c;所以初步按这个Ubuntu 20装&#xff1a; 这个教程是ubuntu20的,用ubuntu14会不兼容&#xff0c;比如qt5.12.12无法安装等&#xff08;需要5.12.3&#xff0…

Web3.0游戏是否还有未来?

当前Web3.0领域已经大规模减速。 对大多数投资者来说&#xff0c;Web3.0游戏是一个炒作噱头&#xff0c;他们更关心投资回报&#xff0c;不那么在意真正交付给玩家的游戏产品&#xff0c;游戏的中长期运营也就失去了保障&#xff0c;今年以来的各种Web3.0游戏的遭遇证明了这一…

postgresql源码学习(十九)—— MVCC④-可见性判断 HeapTupleSatisfiesMVCC函数

拖了好久总算把这一节啃完了...做个记录&#xff0c;有一部分判断条件的案例还没想到&#xff0c;集齐之后可能会再加一篇案例。 一、 可见性判断 回顾一下前面提到的SNAPSHOT_MVCC类型快照的可见性判断条件&#xff1a; postgresql源码学习&#xff08;十七&#xff09;—— …

SQL学习1---表的创建和修改,数据的增删改

目录 一:SQL使用规范 二&#xff1a;DDL&#xff08;Data Definition Language&#xff0c;数据定义语言&#xff09; 三&#xff1a;DML&#xff08;Data Manipulation Language&#xff0c;数据操纵语言&#xff09; 四&#xff1a;创建和操纵表 五&#xff1a;表的数据插入…