2016-10-22 84 views
0

好的,這可能是一個愚蠢的問題。但是,在這裏。將範圍外(負)值指定爲無符號整數類型

如果我將一個負值賦給一個無符號整型,如C++中的「unsigned short a = -1」。

以上示例中a的值設置爲65535(2^16 - 1)。而且我知道,如果我將範圍外的值設置爲無符號整數,則值集合將是可存儲最大大小的數字的模數(本例中爲65536),請您介紹一下數學計算場景?

(-1)模65536 = 65535?它本身不應該是-1嗎?

回答

0

它是1 MSB位的差異。在簽名中,1位用於存儲數字的負數。而在未簽名時,則用於存儲該值。它不是內部工作的數學,它基本上是位模式的操縱,這使得兩者之間的差異。