位运算
solidity中,可以对于最底层的位进行操作。
由于以太坊中需要消耗gas,因此,为了节约gas、所以对于位的操作会用到比较频繁。
solidity中支持多种类型的位运算操作
1、位与 &
2、位或 |
3、位异或 ^
4、位取反 ~
5、<<
6、>>
创新互联建站是少有的
成都网站设计、网站制作、营销型企业网站、成都小程序开发、手机APP,开发、制作、设计、
友情链接、推广优化一站式服务网络公司,于2013年创立,坚持透明化,价格低,无套路经营理念。让网页惊喜每一位访客多年来深受用户好评
数字3、4的二进制表示
数字3、4的底层表示
位与
位与
位或
位或
位异或
位异或
位取反
位取反
位左移
位左移
位右移
位右移
位运算例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| pragma solidity ^0.4.23;
contract weiTest{ uint8 a = 3; uint8 b = 4; function weiyu() public view returns(uint8){
return a &b; }
function weihuo() public view returns(uint8){
return a |b; }
function weiyihuo() public view returns(uint8){
return a^b; }
function qufan() public view returns(uint8){ return ~a; }
function leftMove() public view returns(uint8){ return a<<1; }
function rightMove() public view returns(uint8){ return a>>1; } }
|
整型字面量
solidity在计算过程中的中间值,支持任意的精度,如小数。不会发生溢出操作。
只有在将计算结果赋值给特定类型的时候,才会发生截断溢出等操作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| //返回1 function TestInterger() public pure returns(uint8){ uint8 num = (2**800+1) - 2**800; return num; } //返回50 function TestInterger2() public pure returns(uint8){ uint8 num = 2/4*100; return num; } //返回1 function TestInterger3() public pure returns(uint8){ uint8 num =11111111111111111111111111111111111111111111112-11111111111111111111111111111111111111111111111; return num; }
|
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。
当前名称:solidity智能合约[8]-位运算与字面量-创新互联
文章出自:
http://shouzuofang.com/article/djdjeo.html