tft每日頭條

 > 圖文

 > c語言怎樣表示二進制

c語言怎樣表示二進制

圖文 更新时间:2025-05-17 14:39:47

通常都是基于數字10來書寫數字。例如2157的千位是2,百位是1,十位是5,個位是7,可以寫成:

2 x 1000 1 x 100 5 x 10 7 x 1

注意,1000是10的立方(即3次幂),100是10的平方(即2次幂),10是10的1次幂,而且10(以及任意正數)的0次幂是1。因此,2157也可以寫成:

2 x 10^3 1 x 10^2 5 x 10^1 7 x 10^0

因為這種書寫數字的方法是基于10的幂,所以稱以10為基底書寫2157。姑且認為十進制系統得以發展是得益于我們都有10根手指。從某種意義上看,計算機的位隻有2根手指,因為它隻能被設置為0或1,關閉或打開。因此,計算機适用基底為2的數制系統。它用2的幂而不是10的幂。以2為基底表示的數字被稱為二進制數(binarynumber)。二進制中的2和十進制中的10作用相同。例如,二進制數1101可表示為:

1 x 2^3 1 x 2^2 0 x 2^1 1 x 2^0

以十進制數表示為:

1 x 8 1 x 4 0 x 2 1 x 1 = 13

用二進制系統可以把任意整數(如果有足夠的位)表示為0和1的組合。由于數字計算機通過關閉和打開狀态的組合來表示信息,這兩種狀态分别用0和1來表示,所以使用這套數制系統非常方便。接下來,我們來學習二進制系統如何表示1字節的整數。

1 二進制整數

通常,1字節包含8位。C語言用字節(byte)表示存儲系統字符集所需的大小,所以C字節可能是8位、9位、16位或其他值。不過,描述存儲器芯片和數據傳輸率中所用的字節指的是8位字節。為了簡化起見,本章假設1字節 是8位(計算機界通常用八位組(octet)這個術語特指8位字節)。可以從左往右給這8位分别編号為7~0。在1字節中,編号是7的位被稱為高階位(high-order-bit),編号是0的位被稱為低階位(low-orderbit)。每1位的編号對應2的相應指數。因此,可以根據圖15.1所示的例子理解字節。

c語言怎樣表示二進制(C語言的二進制數)1

這裡,128是2的7次幂,以此類推。該字節能表示的最大數字是把所有位都設置為1:11111111。這個二進制數的值是:

128 64 32 16 8 4 2 1 = 255

而該字節最小的二進制數是00000000,其值為0。因此,1字節可存儲0~255範圍内的數字,總共256個值。或者,通過不同的方式解釋位組合(bit pattern),程序可以用1字節存儲-128~ 127範圍内的整數,總共還是256個值。例如,通常unsigned char用1字節表示的範圍是0~255,而signed char用1字節表示的範圍是-128~ 27。

2 有符号整數

如何表示有符号整數取決于硬件,而不是C語言。也許表示有符号數最簡單的方式是用1位(如,高階位)存儲符号,隻剩下7位表示數字本身(假設存儲在1字節中)。用這種符号量(sign-magnitude)表示法,10000001表示−1,00000001表示1。因此,其表示範圍是−127~ 127。 這種方法的缺點是有兩個0: 0和-0。這很容易混淆,而且用兩個位組合來表示一個值也有些浪費。 二進制補碼(two’s-complement)方法避免了這個問題,是當今最常用的系統。我們将以1字節為例,讨論這種方法。二進制補碼用1字節中的後7位表示0~127,高階位設置為0。目前,這種方法和符号量的方法相同。另外,如果高階位是1,表示的值為負。這兩種方法的區别在于如何确定負值。從一個9位組合100000000(256的二進制形式)減去一個負數的位組合,結果是該負值的量。例如,假設一個負值的位組合是10000000,作為一個無符号字節,該組合為表示128;作為一個有符号值,該組合表示負值(編碼是7的位為1),而且值為100000000-10000000,即10000000(128)。因此,該數是-128(在符号量表示法中,該位組合表示−0)。類似地,10000001是−127,11111111是−1。該方法可以表示−128~ 127範圍内的數。 要得到一個二進制補碼數的相反數,最簡單的方法是反轉每一位(即0變為1,1變為0),然後加1。因為1是00000001,那麼−1則是11111110 1,或11111111。這與上面的介紹一緻。 二進制反碼(one’s-complement)方法通過反轉位組合中的每一位形成一個負數。例如,00000001是1,那麼11111110是−1。這種方法也有一個−0:11111111。該方法能表示-127~ 127之間的數。

3 二進制浮點數

浮點數分兩部分存儲:二進制小數和二進制指數。下面我們将詳細介紹。

1.二進制小數

一個普通的浮點數0.527,表示如下:

5/10 2/100 7/1000

從左往右,各分母都是10的遞增次幂。在二進制小數中,使用2的幂作為分母,所以二進制小數.101表示為:

1/2 0/4 1/8

用十進制表示法為:

0.50 0.00 0.125

即是 0.625.

許多分數(如,1/3)不能用十進制表示法精确地表示。與此類似,許多分數也不能用二進制表示法準确地表示。實際上,二進制表示法隻能精确地表示多個1/2的幂的和。因此,3/4和7/8可以精确地表示為二進制小數,但是1/3和2/5卻不能。

浮點數表示法

為了在計算機中表示一個浮點數,要留出若幹位(因系統而異)存儲二進制分數,其他位存儲指數。一般而言,數字的實際值是由二進制小數乘以2的指定次幂組成。例如,一個浮點數乘以4,那麼二進制小數不變,其指數乘以2,二進制分數不變。如果一份浮點數乘以一個不是2的幂的數,會改變二進制小數部分,如有必要,也會改變指數部分。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved