赞
踩
在 Go 语言中支持以下几种操作位的方式:
举例:
1.使用&来判断一个数字是奇数还是偶数:
- import (
- "fmt"
- "math/rand"
- )
- func main() {
- for x := 0; x < 100; x++ {
- num := rand.Int()
- if num&1 == 1 {
- fmt.Printf("%d is odd\n", num)
- } else {
- fmt.Printf("%d is even\n", num)
- }
- }
- }
2.使用|来设置位数:
- func main() {
- var a uint8 = 0
- a |= 196
- fmt.Printf("%b", a)
- }
- // prints 11000100
- ^^ ^
3.使用^来判断两个数字是否为同号:
- func main() {
- a, b := -12, 25
- fmt.Println("a and b have same sign?", (a ^ b) >= 0)
- }
4.使用^来作为非操作:
- func main() {
- var a byte = 0x0F
- fmt.Printf("%08b\n", a)
- fmt.Printf("%08b\n", ^a)
- }
-
- // prints
- 00001111 // var a
- 11110000 // ^a
5.使用&^来清空位:
- func main() {
- var a byte = 0xAB
- fmt.Printf("%08b\n", a)
- a &^= 0x0F
- fmt.Printf("%08b\n", a)
- }
- // prints:
- 10101011
- 10100000
6.使用|和位移来设置位值:
- func main() {
- var a int8 = 8
- fmt.Printf("%08b\n", a)
- a = a | (1<<2)
- fmt.Printf("%08b\n", a)
- }
- // prints:
- 00001000
- 00001100
7.使用&和位移来测试某一位是否置1:
- func main() {
- var a int8 = 12
- if a&(1<<2) != 0 {
- fmt.Println("take action")
- }
- }
- // prints:
- take action
8.使用&^和位移运算来给某一位置0:
- func main() {
- var a int8 = 13
- fmt.Printf("%04b\n", a)
- a = a &^ (1 << 2)
- fmt.Printf("%04b\n", a)
- }
- // prints:
- 1101
- 1001
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。