GO学习 位运算符

2022-04-17  本文已影响0人  3天时间

昨天文章,今天一看没发出去,重发一下。

package main

import "fmt"

func main() {

/*

  位运算符:

      将数值,转为二进制后,按位操作

  按位&:

      对应位的值如果都为1材为1,有一个为0就为0

  按位|:

      对应位的值如果都是0才为0,有一个为1就为1

  异或^:

      二元: a~b

        对应位的值不同为1,相同为0

      一元:^a

        按位取反:

1—>0

0->1

  位清空:&^

      对于a&^ b

        对于b上的每个数值

        如果为0,则取a对应位上的数值

        如果为1,则结果位就取0

  位移运算符:

  <<: 按位左移,新a转为二进制,向左移动b位a << b

  >>: 按位右移,将a 转为二进制,向右移动b位a >> b

*/

  a :=60

  b :=13

  /*

a: 60 0011 1100

b: 13 0000 1101

&:    0000 1100

|:    0011 1101

^:    0011 0001

&^:  0011 0000

a: 0000 0000 ... 0011 1100

^  1111 1111 ... 1100 0011

*/

  fmt.Printf("a:%d,%b\n",a,a)//%d是十进制,%b是二进制

  fmt.Printf("b:%d,%b\n",b,b)

res1 := a & b

fmt.Println(res1)// 12

  res2 := a | b

fmt.Println(res2)// 61

  res3 := a ^ b

fmt.Println(res3)// 49

  res4 := a &^ b

fmt.Println(res4)//48

  res5 := ^a

fmt.Println(res5)//-61

  c :=8

  /*

c: ... 0000 1000

<< 00 0010 0000

>>    0000 0010

*/

  res6 := c <<2

  fmt.Println(res6)// 32

  res7 := c >>2

  fmt.Println(res7)// 2

}

读完点个赞,给我的坚持更新注入新的活力。

2022.04.16日更57/365 天

公众号:3天时间

上一篇 下一篇

猜你喜欢

热点阅读