c c 關於數的基礎知識

2021-07-26 20:31:14 字數 2689 閱讀 5731

一種是用字元的八進位制ascii碼,表示為:\0dd.這裡,0dd是八進位制值(0可以省略)。

另一種使用字元的十六進製制ascii碼值,表示為 \xhh或xhh 這裡hh是兩位十六進製制值

如:』a』 ,』\101』 和 『\x41』都表示同乙個字元常量。

在c語言中,乙個字元常量代表ascii字符集中的乙個字元,在程式中用單引號把乙個ascii字符集中的字元括起來作為字元常量。

字元常量在記憶體中佔4個位元組,存放的是字元的ascii碼(整型資料)。c語言規定所有字元常量都作為整型量來處理。

在c語言中,字元型資料與整型資料可通用:10+』r』

又稱實數或浮點數。在c語言中可以用兩種形式表示乙個實型常量。

小數形式是由數字和小數點組成的一種實數表示形式,例如0.123、.123、123.、0.0等都是合法的實型常量。

注意:小數形式表示的實型常量必須要有小數點。

*指數形式

這種形式類似數學中的指數形式。在數學中,乙個可以用冪的形式來表示,如2.3026可以表示為0.23026×10^1 2.3026×10^0 23.026×10^-1等形式。在c語言中,則以「e」或「e」後跟乙個整數來表示以「10」為底數的冪數。2.3026可以表示為0.23026e1、2.3026e0、23.026e-1。c語言語法規定,字母e或e之前必須要有數字,且e或e後面的指數必須為整數。如e3、5e3.6、.e、e等都是非法的指數形式。注意:在字母e或e的前後以及數字之間不得插入空格。

程式執行的過程中,其值不能被改變的量稱為常量。常量有不同型別,其中12、0、-5為整型常量。』a」b』為字元常量。而4.6、-8.7則為實型常量。

乙個實型常量可以賦給乙個 float 型、double 型或 long double 變數。根據變數的型別擷取實型常量中相應的有效位數字。

c語言float double資料的驗證,參考如下文件

浮點數 ieee 採用符號位指數字尾數字來表示

float 32bit: 符號位1 指數字8 尾數23

占用8-bit的二進位制數,可表示數值範圍為0-255。但是指數應可正可負,所以ieee規定,此處算出的次方(即是來自記憶體儲存的內容,儲存指數)須減去127才是真正的指數(實際的指數,如12.5轉換為二進位制為:1100.100=1.100100*2^3, 3即為實際指數)。除去全0,全1的情況(用全0表示0,全1表示無窮大),所以最後實際的指數大小是 -126 - 127

(1.11111.....1)2sub>×2127sup> 

=(1+1-2-23sup>) ×2127sup>

=(2-2-23sup>) ×127sup>

= 2128sup>-2104sup>

double 64bit: 符號位1 指數字11 尾數52

單精度浮點數的有效位數是7位。

雙精度浮點數的有效位數是16位

乙個浮點數由三部分組成:符號位s、指數部分e(階碼)以及尾數部分m。

單精度浮點數(float)總共用32位來表示浮點數,其中尾數用23位儲存,加上小數點前有一位隱藏的1(ieee754規約數表示法),

`2^(23+1) = 16777216。因為 10^7 < 16777216 < 10^8,`

所以說單精度浮點數的有效位數是7位。考慮到第7位可能的四捨五入問題,所以單精度最少有6位有效數字(最小尺寸)。

同樣地:雙精度浮點數(double)總共用64位來表示浮點數,其中尾數用52位儲存,

`2^(52+1) = 9007199254740992,10^16 < 9007199254740992 < 10^17,`所以雙精度的有效位數是16位。同樣四捨五入,最少15位。

如果機器字長為n,那麼乙個數的原碼就是用乙個n位的二進位制數,其中最高位為符號位:正數為0,負數為1。剩下的n-1位表示概數的絕對值。

例如: x=+101011 , [x]原= 00101011 x=-101011 , [x]原= 10101011

位數不夠的用0補全。

ps:正數的原、反、補碼都一樣:0的原碼跟反碼都有兩個,因為這裡0被分為+0和-0

知道了什麼是原碼,那反碼就更是張飛吃豆芽——小菜一碟了。知道了原碼,那麼你只需要具備區分0跟1的能力就可以輕鬆求出反碼,為什麼呢?因為反碼就是在原碼的基礎上,符號位不變其他位按位取反(就是0變1,1變0)就可以了。

例如:x=-101011 , [x]原= 10101011 ,[x]反=11010100

補碼也非常的簡單就是在反碼的基礎上按照正常的加法運算加1。

例如:x=-101011 , [x]原= 10101011 ,[x]反=11010100,[x]補=11010101

ps:0的補碼是唯一的,如果機器字長為8那麼[0]補=00000000。

移碼最簡單了,不管正負數,只要將其補碼的符號位取反即可。

例如:x=-101011 , [x]原= 10101011 ,[x]反=11010100,[x]補=11010101,[x]移=01010101

C C 基礎知識

c 基礎知識 定義在class宣告內的成員函式預設是inline函式 進製 問 假設在n進製下,等式 240 12 2880 成立,n值是 a 19 b 18 c 17 d 16 e 15 f 以上都對 答 2 n 2 4 n 1 1 n 2 2 n 3 8 n 2 8 n 1 化簡後為恒等式,故n...

C C 基礎知識

乙個指標可以被多次賦值,但是引用只可以在建立的時候就必須初始化,初始化完畢後就不可改變 乙個指標有它自己的記憶體位址和棧上的大小 x86上面為4byte 但是引用與原有變數共享相同的記憶體位址,但是在棧上仍然占用一些記憶體空間。指標可以指向null,但是引用必須引用乙個有效的物件 乙個指標需要使用 ...

c c 基礎知識

include includeint main else system pause return 0 計算機的原碼用於表示,有符號的前提最高位為符號位,0為正數,1代表負數,其餘各位為數值本身的絕對值,無符號就是資料的絕對值 反碼 正數,反碼與原碼相同 負數,符號位為1,其餘為對原碼取反 補碼 原碼...