上面是图,下面是源码:
package main import ( "fmt" _ "time" ) func main() { a := byte(255) //11111111 这是byte的极限, 因为 a := byte(256)//越界报错, 0~255正好256个数,不能再高了 b := uint8(255) //11111111 这是uint8的极限,因为 c := uint8(256)//越界报错,0~255正好256个数,不能再高了 c := int8(127) //01111111 这是int8的极限, 因为 b := int8(128)//越界报错, 0~127正好128个数,所以int8的极限只是256的一半 d := int8(a) //11111111 打印出来则是-0000001,int8(128)、int8(255)、int8(byte(255))都报错越界,因为int极限是127,但是却可以写:int8(a),第一位拿来当符号了 e := int8(c) //01111111 打印出来还是01111111 fmt.Printf("%08b %d \n", a, a) fmt.Printf("%08b %d \n", b, b) fmt.Printf("%08b %d \n", c, c) fmt.Printf("%08b %d \n", d, d) fmt.Printf("%08b %d \n", e, e) }
有疑问加站长微信联系(非本文作者)