What's int,uint8,uint256 and so on

针对于这篇二更文章,忠告大家:随手保存

前言

最近在学习Solidity中,高频运用到uint256,uint8等。据资料得知,数据类型不得当,会导致交易Gas费用的偏差。一瞬间就有点儿慌了,只知道uint8肯定比uint256能装的东西少,那么它为什么少,少在哪里,为什么不用int256,int8呢?一颗求学之心蠢蠢欲动。

什么是int和uint

简而言之,int就是有符号类型表示,uint就是无符号类型。 如下是int和uint的表示的值的范围
int表示范围
uint表示范围

这些8,16,32,64,256是什么鬼

位(Bit)

位是计算机的最小存储单元

  • 具有原子性(不可拆分)
  • 存储内容为0 / 1
  • 所有的对立属性均可以用位来表示,比如正负电荷0/1来表示,设备中的南北0/1等等
  • 位由于太小不能直接进行使用
  • 8个位组成一个字节
字节(Byte)
  • 由8个位组成
  • 组成元素为 00000000
  • 一个字节能表示一个字符串,如字母,数字,符号
数据的组成
  • int8 8位组成的1bit数值。 表示范围为 -28-1至 28-1,为什么都是8-1呢?由于这是int,8位中的第一位是表示符号的正负的。所以其实只有7位来表示数值范围的。
  • uint8 8位组成的1bit数值。由于u 是unsigned的意思,也就是没有表示符号的位,8位全都来表示数值。也就是表示范围是0至28 - 1
  • 其他的同理可得

在32位系统中的int即表示为 -232-1至 232-1,uint表示为0至 232 - 1

为什么表示范围都要 -1 呢,相信程序员朋友都是知道数数为什么是0,1,2,3,4,5……,这样就豁然开朗了。

总结

由于一直混迹前端圈儿,加上读书时光没有仔细学。针对于这种基础问题都得现在来重新学习了。
相信以后写的智能合约不再是那种会无由浪费Gas的了。

文章作者: liming liu
文章链接: http://unkonws.info/2018/09/11/What-s-int-uint8-uint256-and-so-on/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 黎明