Skip to content

Latest commit

 

History

History
34 lines (24 loc) · 519 Bytes

File metadata and controls

34 lines (24 loc) · 519 Bytes

uint

uint类型溢出

func main() {
	var a uint8 = 1
	var b uint8 = 2
	fmt.Println(a - b)
}

在计算机中数字都是用补码进行表示,而且将加减法都转换为了加法运算,那么1和2对应的补码为

00000001
00000010

那么将1-2就转换为1+(-2)的问题,对应的补码就转为

00000001
11111110

以上两个数字的补码相加结果为

11111111

而且uint8是无符号的整数,那么a-b就会表示为当前uint8的最大值。