go语言位操作

    xiaoxiao2021-08-24  84

    go语言位操作

    基本操作

    取反^ 单目运算符异或^ 双目运算符左移<<右移>>

    示例代码

    package main import ( "fmt" ) // 获取0-n之间的所有偶数 func even(a int) (array []int) { for i := 0; i < a; i++ { if i&1 == 0 { // 位操作符&与C语言中使用方式一样 array = append(array, i) } } return array } // 互换两个变量的值 // 不需要使用第三个变量做中间变量 func swap(a, b int) (int, int) { a ^= b // 异或等于运算 b ^= a a ^= b return a, b } // 左移、右移运算 func shifting(a int) int { a = a << 1 a = a >> 1 return a } // 变换符号 func nagation(a int) int { // 注意: C语言中是 ~a+1这种方式 return ^a + 1 // Go语言取反方式和C语言不同,Go语言不支持~符号。 } func main() { fmt.Printf("even: %v\n", even(100)) a, b := swap(100, 200) fmt.Printf("swap: %d\t%d\n", a, b) fmt.Printf("shifting: %d\n", shifting(100)) fmt.Printf("nagation: %d\n", nagation(100)) }

    补充说明

    ^这个符号作单目运算符的时候是取反,作双目运算符时是异或;跟C/C++语言的位操作(比如取反是~)并不一样

    转载请注明原文地址: https://ju.6miu.com/read-677006.html

    最新回复(0)