当前位置:   article > 正文

Golang中的位运算_golang移位运算

golang移位运算

在 Go 语言中支持以下几种操作位的方式:

  •  &      位与
  •  |        位或
  •  ^       异或
  •  &^     与非
  •  <<     左移
  •  >>     右移

举例:

1.使用&来判断一个数字是奇数还是偶数:

  1. import (
  2. "fmt"
  3. "math/rand"
  4. )
  5. func main() {
  6. for x := 0; x < 100; x++ {
  7. num := rand.Int()
  8. if num&1 == 1 {
  9. fmt.Printf("%d is odd\n", num)
  10. } else {
  11. fmt.Printf("%d is even\n", num)
  12. }
  13. }
  14. }

2.使用|来设置位数:

  1. func main() {
  2. var a uint8 = 0
  3. a |= 196
  4. fmt.Printf("%b", a)
  5. }
  6. // prints 11000100
  7. ^^ ^

3.使用^来判断两个数字是否为同号:

  1. func main() {
  2. a, b := -12, 25
  3. fmt.Println("a and b have same sign?", (a ^ b) >= 0)
  4. }

4.使用^来作为非操作:

  1. func main() {
  2. var a byte = 0x0F
  3. fmt.Printf("%08b\n", a)
  4. fmt.Printf("%08b\n", ^a)
  5. }
  6. // prints
  7. 00001111 // var a
  8. 11110000 // ^a

5.使用&^来清空位:

  1. func main() {
  2. var a byte = 0xAB
  3. fmt.Printf("%08b\n", a)
  4. a &^= 0x0F
  5. fmt.Printf("%08b\n", a)
  6. }
  7. // prints:
  8. 10101011
  9. 10100000

6.使用|和位移来设置位值:

  1. func main() {
  2. var a int8 = 8
  3. fmt.Printf("%08b\n", a)
  4. a = a | (1<<2)
  5. fmt.Printf("%08b\n", a)
  6. }
  7. // prints:
  8. 00001000
  9. 00001100

7.使用&和位移来测试某一位是否置1:

  1. func main() {
  2. var a int8 = 12
  3. if a&(1<<2) != 0 {
  4. fmt.Println("take action")
  5. }
  6. }
  7. // prints:
  8. take action

8.使用&^和位移运算来给某一位置0:

  1. func main() {
  2. var a int8 = 13
  3. fmt.Printf("%04b\n", a)
  4. a = a &^ (1 << 2)
  5. fmt.Printf("%04b\n", a)
  6. }
  7. // prints:
  8. 1101
  9. 1001

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号