c語言中整型變數的取值範圍是怎麼取的?為什麼是負的二的七次方到二的七次方減一?

時間 2021-06-09 12:02:10

1樓:調皮的李先生

我認為是這樣的:1byte等於8bit,也就是8個0或1,如***或11111111。其中第乙個數代表的意思是該數為正還是負,為1時代表負,為0時代表正。

例如:00000001表示該數為1.

至於為什麼是-2^7—2^7-1,(說明一下2^7等於128,所以2^7-1等於127)因為1111111這樣的7位二進位制換算成十進位制為127,而第一位表示符號,所以最大的正數取值為01111111,也就是127,全部為***時表示為0。當為負數時表示方法和一般理解的二進位制就有點區別了,例如:11111111,如果單純的將1看做負,那麼換算成十進位制就為-127,但是實際上不是這樣的,正確答案為-1。

可能是設計這個byte的人認為如果***表示0,10000000表示-0,要麼就是重複了0,要麼就是覺得0不可能是負數,所以就將負數時的byte的二進位制換算成十進位制的方式改成了與正數時的相反,這樣***就表示為-1了,然後又將***規定為-128,這樣正數有128位即0-127;負數有128位即-128-(-)1。

2樓:回三長槍

你說的是signed char吧,乙個位元組最大值為255,因為有符號所以對半分,非負數128個,負數128個。

所以說這種多看書就能解決的問題為啥還要來問

C語言中學習整數型別的取值範圍有什麼用,有什麼意義啊?

黃達 程式設計中,對於你定義的任何乙個 量 你都必須要清楚它的範圍。比如月份是1 12,考慮閏月就是1 13,用了0就是0 12。如距離,1mm 60000mm,超過這個數我不處理。這樣你才能決定用什麼樣的儲存形式來儲存這個量。比如1mm 60000mm的距離,儲存在32位無符號整數裡是合適的,64...

有哪位大神可以講一下c語言中的標誌變數是怎麼回事,以及怎樣進行標誌變數等於1和等於0的設定?謝謝!?

大碼猴 你可以把變數想象成乙個裝東西的容器,通過迴圈加if去判斷,什麼樣的情況給它裝什麼樣的東西。比如 我可以定義乙個布林型別變數 flag 將其預設值賦為 true 實現乙個開關門的操作 true表示門開啟了,false 表示門關上了for 語句if flag 判斷flag的值為true 開門 還...

c語言中指標指向的非指標變數不能使用 或 嗎

大灰灰老師 學術概念上不太正確 關於 unary 的定義 但實際上是對的解釋 C語言中,所有 unary operator 單目運算子,優先順序都是有著 left to right associativity 的比 right to left 的高,即放在被操作量右邊的先算。例如 p 先算右邊的 s...