go语言使用-基础语法(6)运算符(5)位运算符、移位运算符和其它运算符(*和&)

一、位运算符

1、基本介绍

位运算符用来对二进制位进行操作。

2、位运算的一览图

go语言使用-基础语法(6)运算符(5)位运算符、移位运算符和其它运算符(*和&)_第1张图片
说明:因为位运算涉及到二进制相关知识详情参考详情参考go语言使用之进制相关

3、快速入门案例

package main
import (
    "fmt"
)

func main() {

    fmt.Printf("1&2=%d 1|2=%d 1^2=%d\n", 1 & 2, 1 | 2, 1 ^ 2) // 0, 3, 3
    //有负数参与位运算时,参考二进制,进行转补码运算.
}

二、位运算符和移位运算符

1、Golang中有3个位运算
位运算说明
分别是”按位与&、按位或|、按位异或^,它们的运算规则是:
按位与&  :  两位全为1,结果为1,否则为0
按位或| : 两位有一个为1,结果为1,否则为0
按位异或 ^ : 两位一个为0,一个为1,结果为1,否则为0
2、位运算案例
比如:2&3=? -2&-3 2|3=? 2^3=?

比如:2&3=?  -2&3   【位运算】

2 & 3
2 补码   0000 0010
3 补码   0000 0011

     0000 0010
     0000 0011
&  0000 0010 =》 这个是运算的补码结果 ====》 转成 原码 ===》 &  0000 0010  
结果是   2
-2&3 
-2 的补码:  
-2 的原码  1000 0010 
-2 的反码  1111 1101
-2 的补码   1111 1110 
3 的补码    0000 0011

     1111 1110 
     0000 0011
&  0000 0010 =>2

-2&-3 
-2 的补码:  
-2 的原码  1000 0010 
-2 的反码  1111 1101
-2 的补码   1111 1110 
-3 的补码    
-3 的原码  1000 0011 
-3 的反码  1111 1100
-3 的补码  1111 1101 
    1111 1110 
    1111 1101
& 1111 1100 => 补码  ==》 反码 (补码-1) 1111 1011 => 原码  1000 0100 =》-4

3、Golang中有2个移位运算符:

  >>、<< 右移和左移,运算规则:
   右移运算符  >>:低位溢出,符号位不变,并用符号位补溢出的高位
   左移运算符  <<:   符号位不变,低位补0

4、 案例演示

a := 1 >> 2    // 0
1 的补码   0000 0001  => 0000 0000  

c := -1>> 2  //-1
-1 的补码  1111 1111  => 1111 1111 (补码)  ==> 1111 1110 => 1000 0001 

三、其它运算符(*和&)

1、其它运算符说明

go语言使用-基础语法(6)运算符(5)位运算符、移位运算符和其它运算符(*和&)_第2张图片

2、三元运算符的说明

在go中,没有三元运算符,使用 if – else 的结构来替代三元运算符.

go语言使用-基础语法(6)运算符(5)位运算符、移位运算符和其它运算符(*和&)_第3张图片

你可能感兴趣的:(GO/GOWeb)