C 語言基本資料型別裡邊示數範圍和精度應該怎麼算啊

2025-03-25 05:00:31 字數 2768 閱讀 9927

1樓:網友

對於整數型別態慶慎,首先看的是型別有幾位,能表示多少個不同的數。1位有0和1兩種不同狀態,也就是能表示2個數。2位有00 01 10 11四種不同的狀態,能表示4個數。

可以得出n位有2的n次方種不同狀態,能表示2的n次方個數。比如8位能表示256個數,16位能表示65536個數,..

對於無符號整數,範圍就是0~2^n - 1一共2^n個數。比如8位就是0~255。

對於帶符號整數,對於一般使用的補碼錶示法,是-2^(n-1)~2^(n-1)-1,還是2^n個數(也就是分了一半的狀態用來表示負數)。比如8位就是-128~127

對於浮點數,精度取決於有效數字位數。float有24位二進位的有效數字,換算成十進位24 * log2大約是,所以能精確表示7位10進位有效數字。(注意這件事差高譚浩強從來就沒搞明白過)

浮點數使用科學計數法,還有指數部分。帆敬float指數部分最大127,表示有效數字要乘以2^127,有效數字最大約等於2,所以表示的最大的數就是2的128次方,約等於,相對的最小的數也就是。

2樓:小呆瓜

在二進位和十進位之間轉化就可以了。

c語言中如何表示數值的範圍

3樓:路溥福香嵐

在c語言中用到數值範圍一般有如下兩種情況:

邏輯判斷中確定某數在某個範圍內。

比如判斷數c在[a,b]區間內可以寫作。

a<=c)

cb)使計算結果處於某個範圍內。

比如計算時間時,當前時間為n點,經過m小時後是幾點,由於時間僅取值在0點到23點,所以對數值範圍需要做約束。對於此可以用模除(%)來限定。

n+m)%24

其它關於數值範圍限定的問題,都可以從這兩種情況中延伸獲得。

比如下面兩個例題就是兩種情況的應用。

例一,輸入起始天的星期數(1-7),及天數n,計算經過n天后是星期幾。

分析,這個是第二種的典型應用,不過資料規模為1到7,與之前說的0起始情況判茄略有不同,可以通過轉換達到目的,**如下:

#include

int main()

int s,n;

scanf("%d%d"掘戚察,&s,&n);

s --將s-1;這樣用0-6代表星期一到日。

s +=n;

s%=7;//通過模除限定結果。

s++;轉換回1-7的表示方法。

printf("%d", s);/輸出結果。

return 0;

例二,依照下面的公式計算,直到結果小於0或者大於100為止,f(0)由外仔悶部輸入。

如果f(n)為奇數,f(n+1)=2f(n)

否則f(n+1)

f(n)/2-10

輸出計算結果。

題目很清晰,直接輸入並迴圈計算,直到符合退出條件為止。

對於條件的判斷就是第一種情況的簡單應用了。

**如下:#include

int main()

int r;

scanf("%d",&r);

while(r >=0 &&r <=100)//對結果進行範圍判斷。

if(r & 1) r *=2; /奇數的情況。

else r=r/2-10;//偶數的情況。

printf("%d", r);

return 0;

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

4樓:網友

離散數學沒學好吧。

1.串的概念,乙個數字是一位,若干位組成串,比如0011是4位串一般來說指的是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.資料和其表示的概念是分開的,這個自己慢慢理解吧。

5樓:

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

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

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

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

6樓:網友

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

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

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

7樓:救贖削腎客

分沒問題。

乙個二進位位可以表示為0 或者1,就是有兩種變化2個二進位位可以有00 .四種變化、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的基本資料型別包括哪些,C語言中基本資料型別包括哪些

語言包含5個基本資料copy 型別 void,int,float,double,和 char.c 定義了另外兩個基本資料型別 bool 和 wchar t.一些基本資料型別能夠被 signed,unsigned,short,和 long 修飾 所以short,long等等都不算基本資料型別。這是書上...

Java基本資料型別boolean佔記憶體多少

boolean佔1個bit,1 8個位元組,而boolean是引用型別,在棧記憶體中存放著它的引用,在堆記憶體中存放著它的物件 integer可以看成是物件 沒法計算它佔對少記憶體 java中boolean型別佔用多少個位元組 java虛擬機器規範 給出了4個位元組,和boolean陣列1個位元組的...

mybatis引數是基本資料型別時使用引數名為什

目前遇到的是,引數是基本資料型別時,當傳遞乙個引數時,可以使用 當傳遞多個引數時,不可以使用 可以使用 原理上是不會報錯的啊,能否發段 出來看看啊。舉個例子來研究一下。java mybatis 傳入的動態引數必須要和資料庫中的欄位名一樣嗎 眾所周知,mybatis的傳入引數可以是各種java的基本資...