文档章节

iota和<<左移>>右移的用法

浩爷
 浩爷
发布于 2018/01/23 23:03
字数 384
阅读 29
收藏 0

    在go语言中iota比较特殊,是一个被编译器修改的常量,在每一个const关键字出现时被重置为0,然后在下一个const出现之前,每出现一次iota,其所代表的数字就会自动加1

    左移运算符”<<”是双目运算符。左移n位就是乘以2的n次方。 其功能把”<<”左边的运算数的各二进位全部左移若干位,由”<<”右边的数指定移动的位数,高位丢弃,低位补0。

    右移运算符”>>”是双目运算符。右移n位就是除以2的n次方。 其功能是把”>>”左边的运算数的各二进位全部右移若干位,”>>”右边的数指定移动的位数。

例一:

package iota

import "fmt"

func Test()  {

    const(
        c1 = iota  //c1=0
        c2 = iota  //c2=1
        c3 = iota  //c3=2
    )

    fmt.Println("c1 = ",c1," c2 = ",c2," c3 = ",c3,"\n")

    const(
        a = 1 << iota //a = 1
        b = 1 << iota //b = 2
        c = 1 << iota //c = 4
    )
    fmt.Println("a = ",a," b = ",b," c = ",c,"\n")

    const(
        v1 = iota //v1 = 0
        v2        //v2 = 1
        v3        //v3 = 2
    )
    fmt.Println("v1 = ",v1," v2 = ",v2," v3 = ",v3,"\n")

    const(
        x = 1 <<iota //x = 1
        y             //y = 2
        z             //z = 4
    )
    fmt.Println("x = ",x," y = ",y," z = ",z)
}

 

例二:

package main

import (
	"fmt"
)

func main() {
	const (
		a2 = 1 << iota   //iota = 0  a2 = 1 X 2的0次方
		b2 = 3 << iota   //iota = 1  b2 = 3 X 2的1次方
		c2               //iota = 2  c2 = 3 X 2的2次方
		d2               //iota = 3  d2 = 3 X 2的3次方
		e2 = 120 >> iota //iota = 4  e2 = 120 / 2的4次方
		f2               //iota = 5  f2 = 120 / 2的5次方
	)

	fmt.Println(a2, b2, c2, d2, e2, f2)
	//1 6 12 24 7 3
}

 

© 著作权归作者所有

浩爷

浩爷

粉丝 7
博文 90
码字总数 49238
作品 0
深圳
程序员
私信 提问
汇编总结:左移,右移指令

1.左移指令和右称指令的种类及作用: 左移指令作用:左移指令将操作数的bit位向左移动n位,空出来的位用0填充。 左移指令包含sal和shl,这两条指令的作用是相同的,空出来的位用0填充。 其中左...

guonaihong
2015/09/26
5.3K
0
C语言位运算符及常见用法

C语言位运算符及常见用法 Mindy2017-03-1232 阅读 用法运算符C语言 一、位运算符C语言提供了六种位运算符: & 按位与 | 按位或 ^ 按位异或 ~ 取反 << 左移 >> 右移 按位与运算 按位与运算符...

Mindy
2017/03/12
0
0
52个有效方法(5) - 用枚举表示状态、选项、状态码

枚举(enum) 枚举(enum)只是一种常量的命名方式。是C语言中的一种基本数据类型,是一个"被命名的整型常量"的集合。 规范的定义代码中的状态、选项等“常量”。 不参与内存的占用和释放。 在开发...

heil-shikaiming
10/15
0
0
小蚂蚁学习C语言(32)——C语言位运算符和NULL

位运算符 & —— 按位 与 && 逻辑 与 也叫并且 && 与 & 的含义完全不同 把两个数字的每一位都 “ 与 ” 一下 5 & 7 =5 21 & 7 =5 5 & 10 = 0 意义何在? | —— 按位 或 把两个数字的每一位都...

嗜学如命的小蚂蚁
2015/12/28
53
2
C语言中 位运算总结

位运算符包括 & 按位与, | 按位或 , ^ 按位异或 AND (位与&) OR ( 位或| ) XOR ( 位异或^ ) 1 & 1 = 1, 1 | 1 = 1, 1 ^ 1 = 0 1 & 0 = 0, 1 | 0 = 1, 1 ^ 0 = 1 0 & 1 = 0, 0 | 1 = 1,......

神迹难觅
2017/11/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

3_数组

3_数组

行者终成事
38分钟前
7
0
经典系统设计面试题解析:如何设计TinyURL(二)

原文链接:https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 编者注:本文以一道经典的系统设计面试题:《如何设计TinyURL》的参考答案和解析为例,帮助...

APEMESH
今天
7
0
使用logstash同步MySQL数据到ES

概述   在生成业务常有将MySQL数据同步到ES的需求,如果需要很高的定制化,往往需要开发同步程序用于处理数据。但没有特殊业务需求,官方提供的logstash就很有优势了。   在使用logstas...

zxiaofan666
今天
10
0
X-MSG-IM-分布式信令跟踪能力

经过一周多的鏖战, X-MSG-IM的分布式信令跟踪能力已基本具备, 特点是: 实时. 只有要RX/TX就会实时产生信令跟踪事件, 先入kafka, 再入influxdb待查. 同时提供实时sub/pub接口. 完备. 可以完整...

dev5
今天
7
0
OpenJDK之CyclicBarrier

OpenJDK8,本人看的是openJDK。以前就看过,只是经常忘记,所以记录下 图1 CyclicBarrier是Doug Lea在JDK1.5中引入的,作用就不详细描述了,主要有如下俩个方法使用: await()方法,如果当前线...

克虏伯
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部