【Golang】取反码(^ 异或)- 获取最大整数

Golang的比特位运算符——异或(^),可以用来取整数的反码

^uint(0) :最大无符号整数

int(^uint(0) >> 1) :最大有符号整数
int(^(^uint(0) >> 1)) :最小负整数

package main

import "fmt"

func main() {
    uMax := ^uint(0)
    fmt.Printf("%#x\n", uMax)  //32位机器:0xffffffff  ; 64位机器:0xffffffffffffffff
    fmt.Println(uMax)

    sMax := int(^uint(0) >> 1)
    sMin := int(^sMax)
    fmt.Printf("%#x\n", sMax) //32位机器:0x7fffffff  ; 64位机器:0x7fffffffffffffff
    fmt.Println(sMax)
    fmt.Printf("%#x\n", sMin)
    fmt.Println(sMin)
}

输出:

0xffffffffffffffff 
18446744073709551615
0x7fffffffffffffff
9223372036854775807   
-0x8000000000000000
-9223372036854775808     
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。