找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1790|回復: 9
收起左側(cè)

C語言char類型取值范圍疑問

[復制鏈接]
ID:491577 發(fā)表于 2023-12-24 23:20 | 顯示全部樓層 |閱讀模式
C語言char類型取值范圍是:-128~127;最高位是符號,剩下7位表示數(shù)值,最小值應該是B11111111,也就是-127,請問-128怎么用8位二進制表示?
回復

使用道具 舉報

ID:1102798 發(fā)表于 2023-12-25 00:04 | 顯示全部樓層
-128在8位二進制中可以用B10000000表示。
回復

使用道具 舉報

ID:235200 發(fā)表于 2023-12-25 01:10 | 顯示全部樓層
這是計算機里的表示方法,數(shù)據(jù)用補碼表示,正數(shù)的補碼與原碼相同,負數(shù)的補碼用反碼加1來表示
回復

使用道具 舉報

ID:235200 發(fā)表于 2023-12-25 01:19 | 顯示全部樓層
-127在計算機中表示為 原碼是11111111,反碼是10000000,補碼是10000001,而-1的補碼是11111111,這都是負數(shù),0用00000000表示,還有1個-0即10000000(實際上不能認為是0),所以就認為是-128
回復

使用道具 舉報

ID:1106235 發(fā)表于 2023-12-25 18:19 | 顯示全部樓層
在大多數(shù)現(xiàn)代系統(tǒng)上,char 類型通常被視為一個有符號的8位整數(shù)類型,這意味著它的取值范圍是 -128 到 127。這是因為在ASCII碼中,-128到127的碼值用于表示常見的字符和符號。  但是,值得注意的是,C語言標準并沒有規(guī)定 char 類型必須是有符號的。在一些系統(tǒng)或編譯器上,char 類型可能是無符號的,這意味著其取值范圍是 0 到 255。
回復

使用道具 舉報

ID:883242 發(fā)表于 2023-12-26 13:18 | 顯示全部樓層
chqqppbb 發(fā)表于 2023-12-25 18:19
在大多數(shù)現(xiàn)代系統(tǒng)上,char 類型通常被視為一個有符號的8位整數(shù)類型,這意味著它的取值范圍是 -128 到 127。 ...

IAR可以在編譯選項那里選擇plain char是signed還是unsigned。
回復

使用道具 舉報

ID:235200 發(fā)表于 2023-12-26 13:38 | 顯示全部樓層
Hephaestus 發(fā)表于 2023-12-26 13:18
IAR可以在編譯選項那里選擇plain char是signed還是unsigned。

默認是signed
回復

使用道具 舉報

ID:1106445 發(fā)表于 2023-12-26 14:05 | 顯示全部樓層
在 C 語言中,char 類型確實可以存儲從 -128 到 127 的值,這是因為它通常是 8 位的,采用二進制補碼形式表示整數(shù)。在補碼表示法中,最高位也是符號位,但是 -128 的二進制表示不是 B11111111。實際上,B11111111 在補碼表示法中對應的是 -1。  在補碼表示法中,-128 的二進制表示是 B10000000。這是因為補碼系統(tǒng)的設計允許一個額外的負數(shù)的表示。在 8 位系統(tǒng)中,+127 的補碼是 01111111,而 -128 則是 10000000。這種表示法的優(yōu)勢在于加法和減法可以使用相同的電路,而且不存在正零和負零的區(qū)別,只有一個零值 00000000。
回復

使用道具 舉報

ID:1106423 發(fā)表于 2023-12-26 16:47 | 顯示全部樓層
對于負數(shù),計算機內(nèi)部使用的是二進制補碼表示法。在補碼表示法中,負數(shù)的表示方法是對其絕對值的二進制表示進行按位取反(得到反碼),然后再加1。例如,要表示-128,我們首先取128的二進制表示(即10000000),然后進行按位取反得到01111111,最后再加1得到10000000。所以,-128在8位二進制中的表示就是10000000
回復

使用道具 舉報

ID:1106423 發(fā)表于 2023-12-26 16:51 | 顯示全部樓層
在MPLAB X IDE 5.45和XC16編譯器中,如果在匯編代碼中使用了軟件浮點數(shù)乘法,而鏈接時找不到浮點數(shù)庫,可以通過以下步驟進行設置:

1. 首先,確保已經(jīng)包含了所需的浮點數(shù)庫。在XC16編譯器中,通常使用`libm`庫來支持軟件浮點運算。

2. 接下來,需要在MPLAB X IDE中的項目設置中指定鏈接器可以找到這些庫。這通常涉及到在項目屬性或鏈接器設置中添加庫的路徑和名稱。

3. 在MPLAB X IDE中,您可以通過以下步驟找到鏈接器設置:
   - 選擇項目菜單下的“屬性”選項。
   - 在彈出的窗口中,選擇“XC16 Linker”選項。
   - 在該選項卡中,您可以找到“庫搜索路徑”和“庫”選項,您可以在這里添加所需的浮點數(shù)庫路徑和名稱。

通過上述步驟,您可以在MPLAB X IDE中的項目設置中指定鏈接器可以找到所需的浮點數(shù)庫,從而解決鏈接時找不到浮點數(shù)庫的問題。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表