c語言資料的範圍怎麼求,C語言資料的範圍怎麼求?

2022-02-08 21:30:08 字數 4223 閱讀 1016

1樓:匿名使用者

離散數學沒學好吧

1.串的概念,乙個數字是一位,若干位組成串,比如0011是4位串2.int一般來說指的是32位os上的,它是32位的串3.

資料的格式,把2進製串當成2進製的值,所以無符號int的範圍是0~11111...(32個1,約42億9千7百萬)

4.有符號資料的資料格式,乙個數的負數資料表示是其的2補碼,所以有符號int的0~01111...(乙個0和31個1)表示和無符號int是一樣的正數,但是1000...

(乙個1和31個0)表示-01111...(乙個0和31個1),並且每加1,表示的負數數值就大1,這樣不管是有符號還是無符號都遵循一樣的運算規則

5.資料和其表示的概念是分開的,這個自己慢慢理解吧

2樓:

32位是指32位 0/1 ,能表示的數共有 2^32 個。

對於有符號型別,最高位0表示正數,1表示負數,因此範圍是 [-2^31, 2^31-1] 。

(最好看看「補碼」的解釋)

16次方是老機器了,16位機上 int 是2個位元組。

3樓:匿名使用者

1 不同環境下int資料的佔用位元組不一樣 有十六位,也有32位

2 當數有正負是 需要記錄這個數是正還是負,統一標準是首位標記,為正或為0首位為0,為負首位為1,除去首位還有 15位或者 31位,它們分別能表示 2的15次方個數 和2的31次方個數。

由於首位為0時包括 0,故正數數量比上述值少1。

4樓:救贖削腎客

分沒問題

乙個二進位制位可以表示為0 或者1,就是有兩種變化2個二進位制位可以有00 .01.10.11四種變化、2的2次方。

但是00表示為0,,01表示為1,10表示為2,11表示為3,所以最大的只有3,2的2次方減一

*************************===我們最常用的是十進位制。

0-9、大於9的話就有兩位了變成了10.這裡意思和2進製是一樣的一位十進位制最多表示 10-1也就是9

兩位十進位制最大也只能表示99,也就是10的2次方減一,不知道這麼說你懂了沒?

c語言中整型資料的取值範圍是怎麼確定的???

5樓:紫荊

這個你要明白整型在計算機中的儲存原理--補碼形式儲存,舉乙個類吧,short 所佔位數是16位,即

其中要說明的是最大整數 (0111111111111111)計算方法

0111111111111111 即相當於16進製制的7fff,轉換為10進製後是 32767

最大負數:1000000000000000,由於最高位是1,判斷為負數,用求補碼的原理,按位求反+1

即 反碼 0111111111111111  補碼 100000000000000   轉換為10進製 32768  補回符號

-32768

其它的同樣計算

6樓:匿名使用者

對於無符號數,比較簡單,根據佔用的位數可以直接計算:

unsigned short 16位 0~2的16次方-1(即65535)

unsigned int 16位 0~2的16次方-1(即65535)

unsigned long 32位 0~2的32次方-1(即4294967295)

對於有符號數,由於符號位佔用一位,並且負數要用補碼表示

以8位資料為例:2進製的11111111表示-1,10000000表示-128,所以負數範圍-128~-1;2進製00000000表示0,01111111表示127,所以正數範圍0~127。合起來就是-128~127,找一下規律發現是- 2的(8-1)次方~2的(8-1)次方-1,那麼就可以得到任何位數的範圍:

short 16位 - 2的(16-1)次方~2的(16-1)次方-1(即-32768~32767)

int 16位 - 2的(16-1)次方~2的(16-1)次方-1(即-32768~32767)

long 32位 - 2的(32-1)次方~2的(32-1)次方-1(即-2147483648~2147483648)

7樓:青春之塔

看儲存空間和表示形式啊,補碼還是原碼。

c語言中,浮點型的數值範圍是如何算出來的?

8樓:金色潛鳥

浮點型數的2進製表達方法 ieee 754 有詳細規定,各編譯器參照此規定執行。

例如,符號位,指數符號位,指數字,尾數字 各幾位,如何表達,nan(不是乙個數字叫nan)如何表達, 無窮(infinity) 如何表達,正0負0如何表達,還有 denormalized 如何表達,normalized 如何表達。很繁瑣。

自己用的編譯器規定,可以見編譯器帶的標頭檔案 float.h 和 limits.h

例如:#define ldbl_mant_dig 64

#define ldbl_max 1.189731495357231765e+4932l

#define ldbl_max_10_exp 4932

#define ldbl_min 3.3621031431120935063e-4932l

。。。。

9樓:匿名使用者

二進位制……………………

c語言中關於變數的取值範圍是怎樣計算出來的 5

10樓:匿名使用者

對於每個資料型別,系統分配給他固定大小的記憶體。

例如 int 型變數,系統固定分配給它4個位元組的記憶體,1個位元組是8位,也就是乙個int型變數的取值範圍是 2的32次方這麼大。

11樓:木子思曰

關鍵是看你定義的變數是什麼型別的

char 的是8位 也就是0-255

有符號的char 也是8位 -127-+127int 是16位 0-65535==

12樓:匿名使用者

float型和整型、字元的儲存方式是不一樣的整型和字元型 是按照二進位制位整數的方式儲存的而浮點型儲存的時候 分別儲存的是 尾數 和指數 以及尾數和指數的符號位 所以float型分配的4個位元組中有2個符號位 其他的資料位 分配給尾數和指數了 而不保留底數

尾數是按照科學計數法表示規範化形式

13樓:鈍角111度

按二進位制位數算出來的,比如8位的變數,取值範圍為2的八次方,0到128,如果是有符號的就是負64到正64,如果是16位的,取值範圍是2的16次方,0到65536,如果是有符號的,從負32768到正32768依次類推,2的32次方,等等。

14樓:匿名使用者

比如16位 ;有正負的; 就是2的-15次方 到 (2的15次方)-1 ;因為有0

c語言中怎麼計算乙個型別的取值範圍?如 char 用程式算

15樓:匿名使用者

c語言中char型別佔乙個位元組,屬於有符號數,按補碼進行資料存放。

如果用程式,來獲取取值範圍,可以設定兩個變數來儲存最大值和最小值,另設乙個unsigned char型變數,從乙個位元組的0(00000000)開始累加,直到變成255(11111111),統計其中的最大和最小值。

#include

int main()

return 0;

}執行結果:

min=-128 max=127

16樓:小神秘闖闖

首先確定位元組,然後確定位,有符號的就是-2的位次方到2的位次方–1,有符號的char是8位元組,它的取值範圍就是-2的7次方到2的7次方再減一

17樓:絕地

根據char的取值範圍和unsigned char的取值範圍的位數,如char和unsigned char都是8位,char型最高位是符號位,1代表為負數,所以為-2^7-1~~+2^7-1 即-128~+127 ,而unsigned char為2^8-1=256

即0~255

18樓:

char是乙個位元組也就是8位二進位制數字,所以乙個char的取值範圍是0-255

基本上都是這樣計算,就是查詢各個型別的位數。

C語言相關數問題,C語言相關數問題

include int main int temp,n,number 90 key printf 請輸 入這組數字的個數 scanf d n printf n請輸入這組數字,每行乙個 n for temp 0 temp相關數 scanf d key printf n相關數為 n for temp 0...

資料結構c語言描述,資料結構(C語言描述)

include include include define datatype int define maxsize 1000 typedef struct nodebitreenode datatype bt maxsize bitreenode buildbtree datatype bt,in...

c語言中,怎麼判斷常量是否合法,判斷C語言數值常量是否合法 為什麼不合法?

整型分字首 0 0x 和字尾 u l 每種進製中用的數字不同 浮點數字尾f l,指數表示注意是否在範圍內 字元與字串主要注意轉義字元後面是否合法 a 整數中不允許出現逗號 b 科學計數法表示1.5乘以10的2.0次方,由於科學計數法指數部分只能是整數。c 號是轉義符號後面要跟其他符號來表示具體字元,...