zoukankan      html  css  js  c++  java
  • 《Go编程基础》视频第4课: 常量与运算符 笔记

    《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 

  • 相关阅读:
    django rest_framework中将json输出字符强制为utf-8编码
    Java
    Java
    Oracle
    IDEA
    Ubuntu
    Ubuntu
    Ubuntu
    Ubuntu
    Oracle
  • 原文地址:https://www.cnblogs.com/ghj1976/p/3039578.html
Copyright © 2011-2022 走看看