package main
import "fmt"
func main() {
a := uint16(65000)
b := int16(a)
fmt.Println(b)
}
输出: -536
16位数的最大数是65535,65000转为二进制是1111110111101000,因为第一位是1,在强制性转换为有符号的时候,第一位会被当作符号为进行转换,1表示负数,0表示正数,具体原理请查看C语言基础
#1