随笔 - 934, 文章 - 0, 评论 - 249, 阅读 - 345万

导航

< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

《Go编程基础》视频第4课: 常量与运算符 笔记

Posted on   蝈蝈俊  阅读(3316)  评论(1编辑  收藏  举报

《Go编程基础》视频 第4课: 常量与运算符 笔记,视频上有些内容讲的对我来说不是很清楚,附加的找了一些资料补充了这些信息。

 

视频地址: http://www.tudou.com/programs/view/evSrdqTW9zg/

作者的视频笔记地址: https://github.com/Unknwon/go-fundamental-programming/blob/master/lecture4/lecture4.md

1、类型别名

rune是int32的别名,byte是uint8的别名。所以我们直接可以对 rune 类型做数学运算。

package main

 

import (

    "fmt"

    "reflect"

)

 

const (

    b   = 'A'  // rune int32

    num = b * 20

)

 

func main() {

    fmt.Println(b)

    fmt.Println(reflect.TypeOf(b))

    fmt.Println(num)

}

输出:

65

int32

1300


2、Golang的位运算


package main

 

import (

    "fmt"

)

 

/*

            二进制   十进制

            01100   12

            10110   22

-----------------------

二元位运算符  二进制   十进制    逻辑

    &       00100   4        相同位的两个数字­都为1,则为1;若有一个不为1,则为0

    |       11110   30       相同位只要一个为1即为1。否则为0

    ^       11010   26       相同位不同为1则为1,否则为0。

    &^      01000   8        如果第二个数是1,则强制把第一个数改成0,否则不变。

*/

 

func main() {

    fmt.Println(12 & 22)

    fmt.Println(12 | 22)

    fmt.Println(12 ^ 22)

    fmt.Println(12 &^ 22)

}


上述代码输出结果:

4

30

26

8


3、一元运算符^ (按位取反)

例子:

 

package main

 

 

 

import (

 

    "fmt"

 

)

 

 

 

func main() {

 

    var n int = 6

 

 

 

    fmt.Printf("%s\n%08b\t%b\t%d\t%b\n%08b\t%b\t%d\t%b\n\n",

 

        "^6 位取反",

 

        n, n, n, uint(n),

 

        ^n, ^n, ^n, uint(^n))

 

}

这个演示代码的输出:

 

 

 

 ^6位取反

  00000110  110    6  110

  -0000111  -111  -7  11111111111111111111111111111001



原理 比如32位编译器,所以

10(10进制) = 00000000 00000000 00000000 00001010 (2进制)
^10 = 11111111 11111111 11111111 11110101 = -11

http://bbs.csdn.net/topics/80332256

 

 

1的二进制表示
00000001

取反变成
11111110
这个数就是-2
简单点说就是正数a取反=-(a+1),当然不能超数数字表示范围

 

 

参考资料:

Go位运算:取反和异或
http://bbs.studygolang.com/thread-52-1-1.html

位操作
http://zh.wikipedia.org/wiki/%E4%BD%8D%E6%93%8D%E4%BD%9C 

 

 

参考资料:

http://ilovers.sinaapp.com/doc/golang-specification.html#Operators 

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示