負數為什麼能用無符號整型表示,關於在C語言中無符號整形儲存負數問題

2021-03-11 04:51:56 字數 2850 閱讀 5307

1樓:

把0到4294967295按順序排列成乙個「環形」,則0兩邊的數就是1和4294967295,如果無符號整型版

在使用中沒有超出範圍,那麼權結果都是正確的,如果超出了範圍,程式也會給出乙個結果但這個結果是錯誤的,錯誤的結果也是有規律的,比如說,無符號整型所表示的最小的數是0,如果在使用中出現了-1,那麼程式給出的(錯誤)結果就是環形中0旁邊的數,顯然不會是1,只能是4294967295。依此環形類推,-2就是4294967294,轉換成二進位制就是1111111111111110(十五個一)。

2樓:匿名使用者

負數是有符號數,拿32位機說。負數在計算機內部儲存的時候最高位的1是符號位,不能拿來計算大小。無符號數最高位不是符號位。 大哥去看下各種型別在計算機內是如何儲存的吧

3樓:匿名使用者

負數是不能用unsigned int表示的,1111111111111110表示的不是-2。

你把補碼的概念弄錯了。

負數可以用有符號的型別。如int, char,等

4樓:匿名使用者

看看關於補碼和位元組位的知識吧,儲存形式都是一樣的,但是表達的途徑不一樣現實的結果就不一樣

5樓:似水流年的夢想

歸根結底,bai輸出函式以一定的格式

du輸出儲存zhi在記憶體中的資料,dao輸出函式本身並不知專道開始時你儲存的值是什麼屬型別的,它只是依照函式內的格式輸出變數的值,因此可能出現資料丟失的可能。(如,你將實型的資料以整型或無符號整型輸出,它只會擷取後十六位輸出,前面的不管了。)

你提的問題是關於負整數補碼的,應該再仔細琢磨一下課本,你有漏讀的地方,推薦譚浩強的那本《c程式設計》,不錯的書。

我們要盡量避免這種情況的出現(如果你不是故意的話)本人郵箱let610@163.***,可以**一下。

無符號整形能為負數嗎?如果計算結果是負,他最終結果是什麼?

6樓:匿名使用者

無符號抄a = 無符

號b - 無符號c

無符號和 無符號運算的時候,結果也是無符號的,你說的例子1 - 2 = -1,

在int32環境下,二進位制表示結果為 32個1 ,這裡的-1是轉換成有符號來看的,無符號的值是4294967295,也就是說,1 - 2 = 4294967295

無符號a = 有符號b - 有符號c

這裡的右邊有符號計算成有符號, b = 1, c = 2,的話 1 - 2 = -1,

然後將-1的補碼表示轉換成無符號, -1的補碼上面說過了,就是32個1, 就是4294967295

關於在c語言中無符號整形儲存負數問題

7樓:匿名使用者

你的理解是對的。

最高位為1時,對於有符號來說,這個數是負數,而對於無符號數而言,由於最高位也是有效儲存位,所以可以儲存更大範圍的數。

話再說回來,既然是無符號數,輸出格式應該是"%u",而不是"%d",這樣才能做到「表裡如一」,「改頭換面」只會亂了自己,這不是遊戲,嚴謹是必須的。

c語言無符號整形和無符號短整型顯示負數結果為什麼不一樣?

8樓:匿名使用者

因為printf裡用%d來輸出某個變數時,程式會預設該變數為int型。如果該變數

是內整型,容但不是int,而是char或者short,程式會先把它轉換成int型,再傳給printf.

所以用unsigned int a=-12時,沒有上面所說的轉換步驟,%d當成有符號整數,輸出是-12,沒問題。

unsigned short a=-12時, 注意這時候a是16位,在記憶體中是11111111 11110100,轉換成int型會變成32位,程式在它的左邊會新增16個0,變成00000000 00000000 11111111 11110100,這時候符號位是0了,當然變成正數了。

9樓:匿名使用者

顧名思義,無bai符號是du沒有符號的,只能zhi

儲存非負數。所以顯dao示結果是不一版樣的。

在計算權機內部,負數與非負數沒有區分,只是負數用補碼形式儲存,補碼是原碼按位取反再加1得到的。對於負數來說首位一定是1,假如作為正數,將是乙個很大的數,也就變成了另乙個數了。

10樓:匿名使用者

無符號整型和無符號短整型所佔的位元組數是不一樣的

11樓:匿名使用者

你把它寫成2進製就知道了!

計算機的二進位制帶符號運算為什麼用0表示正數,1表示負數?

12樓:薇薇采兒

在二進位製碼

復中,為了區分正制負數,採用bai最高位是符號

du位的方法來區分,正數zhi的dao符號位為0、負數的符號位為1.剩下的就是這個數的絕對值部分,可以採用原碼、反碼、補碼3種形式來表示絕對值部分。

原碼最簡單,也最好理解.原碼就是絕對值的二進位制數形式:例如+7的8位二進位制原碼是00000111,-7的8位二進位制原碼是10000111。

但對於二進位制運算而言,原碼的運算不夠方便,當兩個數相加時,先要判斷這兩個數的符號是否相同,符號不同的話,還要判斷哪乙個數的絕對值更大.所以在計算機中,通常都是採用補碼形式。

正整數的補碼與原碼形式相同,例如+7的8位二進位制補碼是00000111;而負整數的補碼則可以通過下列方式得到:將這個負整數的絕對值求反加1,連同符號位1一起表示就可以了.例如-7的8位二進位制補碼:

將-7的絕對值7求反加1得1111001,連同符號位1一起就是11111001。

你也可以練習一下+13和-13的8位二進位制補碼:+13d=00001101,-13d=11110011。

有符號整型資料和無符號資料型別是什麼

整型有無符號 unsigned 和有符號 signed 兩種型別,在預設情況下宣告的整型變數都是有 內符號的型別 char有點特別 容,如果需宣告無符號型別的話就需要在型別前加上unsigned。無符號整型和有符號整型的區別就是無符號型別可以存放的正數範圍比有符號整型中的範圍大一倍,因為有符號型別將...

為什麼用符號表示男

男女符號 的來歷有兩種說法。第一種說法 因為愛神丘位元的弓箭袋狀如 女神維納愛美,常持小鏡子形似 人們就用這兩個符號作為愛神和女神的代號,後來它們就被分別用來表示男和女了。植物學家借用這兩個符號來表示植物兩性花。另一種說法 起初,這兩個符號並非表示男女的,而是植物學家先用 表示雄花,表示雌花的。除此...

叔侄能用頭髮做血緣關係嗎,為什麼叔侄血緣關係會高達99 點幾

可以的。遺傳學理論已證實,子女的基因組dna各有一半分別 於親生父母一方。法醫物證專業開展的親緣關係鑑定包括以下幾類 1 常規的親生血緣關係鑑定 這是需求量最大的一類親權關係鑑定,包括父母子三方 又稱為三聯體 父子 或母子 雙方 又稱為二聯體 的親權鑑定。這類鑑定的準確率可以達到99.999999 ...