c語言中,整型資料的溢位中為什麼32767 1 367678請給出詳細過程如果

2022-06-09 13:36:31 字數 2523 閱讀 7552

1樓:

我說了可能你不同意:計算機根本不知道有什麼負數或正數,它就是對一串定長的01序列按二進位制規則進行加法運算,在16位二進位制平臺下一共有2^16個排列,人們把這些排列用來替代負數、0和正數,並使二進位制+1時對應的十進位制數也是+1的值,這樣,它們的範圍剛好是十進位制的-32768~+32767。當32767+1時,計算機內的得數就是最高位為1,後面15個0,它實際上就是十進位制數的32768。

但按上述規則這一串二進位制序列應該對應-32768才對,所以在輸出時「由軟體在前面添上了一個'-'號。如果告訴軟體要按無符號數輸出,那個-32768立馬就變成+32768了。按以上解釋,32767+2有符號輸出就是-32767,無符號輸出就是32769了。

以下**可以驗證:

我想你看明白了……

2樓:白雲藍天

正如讀者的迷惑,若干c語言的教材裡指明int型別的變數佔用記憶體2位元組,取值範圍-32768~32767,為什麼輸出32767+1會得到32768的答案,這不是超出了int的表達範圍嗎? 原因在於,部分新教材都仍沿用以前的標準c教材,而老的教材以標準16位版本的c

c語言關於整型資料溢位的問題

3樓:匿名使用者

關於long型在計算機記憶體儲方式,參看:

4樓:曾來福諶姬

資料儲存到記憶體是按照2進位制儲存的

int型只能儲存32位(二進位制),如果超出了就會把前邊的溢位了,就是保留後邊的,前邊的扔掉了

具體的還要涉及到正數和負數的問題,有符號的話,第一位是表示符號的

整型資料溢位,對於32位字元 2147483647+1,怎麼設定才能輸出真實值

5樓:gta小雞

可以用unsigned int型,這樣最高位也被用作表示值,可以表示的正數範圍比int擴大一倍。

(c語言)整型資料的溢位

6樓:匿名使用者

其實這個問題很簡單的,這個可能和你編譯器環境有關,int 型別表示範圍是-32768-32767。所以你可以把它的表示範圍比作一個圓。因為在電腦中負數是按補碼儲存的,所以加1之後會出現進位。

如果是char 型別表示-128-127的話,那麼char a = 128也會變成-128的。

你可以看一下下面的圖,這個圓就好比表示的範圍。如果不信的話你可以將int a = 32769;試試的,輸出應該會變成-32787

7樓:匿名使用者

這個是計算機中的負數補碼錶示

假定有符號的最大值(二進位制) 為0111...111 後面若干個1 當然 取決於計算機的位長度

增加1之後溢位的話 就成了 1000...000 這個時候符號位就變成了1 也就是會被判定為負數

然後再轉換成十進位制自然就是負數了

8樓:

你用的是16 bit的編譯器吧,16bit的編譯器的int範圍是,32767 ~ -32768

對於32 bit而言 int型,表示的範圍是2147483647~-2147483648

請注意,最大範圍是32767,不是32768;

32768的最高bit是1,1就表示負數

32768 --> 0x8000 = -32768

9樓:眾裡尋他

有符號位整型的最大為32767吧

c語言資料溢位時的值是負值嗎

10樓:匿名使用者

當整型資料超出取值範圍時 資料呈環形變化 例如32767 + 1 = -32768 36767 +2 = -32767

-32768 -1 = 32767 -32768 - 2 = 32766

理解一下 希望這個例子能幫助你

11樓:匿名使用者

資料溢位要看溢位多少,兩個很大的數相加,溢位結果還是正數,只是變小了。

12樓:匿名使用者

不對。資料溢位分為上溢位和下溢位兩種情況。另外資料儲存在變數裡時與變數的資料型別密切相關。所以溢位現象要分類討論。

例如,unsigned int型或unsigned short型或unsigned char型變數在上溢位時,將捨去超範圍資料,其值仍然為正。

附上測試程式:

#include

void main(void)

c語言中關於資料溢位的解釋

13樓:龥

main() int型別的資料佔用只有16位元即一字(兩個位元組),其取值範圍為-32768~32767 long也是整形資料,不過它的資料型別佔用了32位元兩個字(四個位元組),其取值範圍為 -2147483648~2147483647 還有一點要記住的時,如果變數是long那,輸出資料時,在%d的d前面一定要加一個l即%ld

c語言中定義無符號整型變數有什麼作用

整型有無bai 符號 unsigned 和有符號 signed 兩種du型別,在預設情況下聲zhi明的dao整型變數都是有符號的型別 版char有點特別 如果需聲 權明無符號型別的話就需要在型別前加上unsigned。無符號版本和有符號版本的區別就是無符號型別能儲存2倍於有符號型別的資料,比如16位...

c語言中資料型別是按什麼劃分的,C語言中資料型別是按什麼劃分的

資料型別在資料結構中的定義是一個值的集合以及定義在這個 值集上的一內組操作。變數是用來儲存容值的所在處 它們有名字和資料型別。變數的資料型別決定了如何將代表這些值的位儲存到計算機的記憶體中。在宣告變數時也可指定它的資料型別。所有變數都具有資料型別,以決定能夠儲存哪種資料。根據預設規定,如果在宣告中沒...

c語言中整型數a b c怎麼進行值的互換

二個變數值的交換一般需藉助於一個輔助變數來完成的。inta 3,b 4,t 通過以下的三個語句就能把a,b的值互換 這種操作有點像把二個瓶裡的液體交換時,要藉助於一個空瓶 t a a b b t 不太清楚什麼是 a bc值的互換 如果是要把a 1,b 2,c 3 輪換 為a 2,b 3,c 1的話,...