C語言中只有十進位制數可是負數,那為什麼我在一本書上看到 011表示八進位制數 11呢

時間 2022-03-08 15:30:23

1樓:匿名使用者

是有負數的,二進位制,八進位制,十六進位制只是表示方式不同,二進位制在機器(計算機)中最高位作為符號位,你說的「-011」,「-11」只是書中的表達,是為了讓「人」看明白。

二進位制,逢2進1

八進位制,逢8進1

十六進位制,逢16進1

這其實和十進位制逢10進1一回事。

十進位制中的第一位可由0-9的數字表示,第二位的值0-9 *10,第三位的值0-9 *10*10,。。。

同理:二進位制的第一位可由0-1的數字表示,第二位的值0-1 *2,第三位的值0-1 *2*2,。。。

把每一位的值相加就是一個十進位制的數

要把一個數轉換為十進位制,如數:987(十進位制),個位是7,十位是8,百位是9,怎麼「算」出來的?個位是7=987%10(除10的餘數),十位是8=98(前一次除得到的商)%10,百位是9=9%10

同理二進位制:數23,第1位:23%2=1,第2位:11%2=1,第3位:5%2=1,第4位:2%2=0第5位:1%2=1,即17(十進位制)-10111(二進位制)

同理八進位制,十六進位制。

2樓:匿名使用者

哪有這樣的說法?

八進位制轉二進位制每一位轉成三位, 0 -> 000 1-> 001 2->010 3->011 4->100 5->101 6->110 7->111

十六進位制類似,每一位轉成4位就不具體寫了

十進位制轉就是連續的除二,把餘數按次序從低位到高位排起來

3樓:匿名使用者

八進位制第一個數字應該是0 這樣就清楚的顯示是八進位制數字 轉換上面有寫 就不說了

c語言中八進位制數不能表示負數嗎?我看了一本書,說是像 -045 這種型別的八進位制數是錯誤的

4樓:匿名使用者

負數在十進位制中用-號做前導表示,在別的進位制中就沒有這個前導符號了,最多表示減號。

希望輸入負數形式的八進位制或十六進位制資料,先得了解被賦值的資料型別,然後用補碼形式給出資料。

5樓:惡靈的加護

一般來說,八進位制和十六進位制是跟二進位制掛鉤的。

在二進位制中,負數是通過補碼的形式表示的,寫成十六進位制就不會帶負號了。

6樓:匿名使用者

可以表示負數 但是隻能表示整數 不能表示小數 整數包含正整數和負整數

7樓:id雞蛋炒韭菜

這裡的-045應該是八進位制數,前面寫個0代表八進位制

8樓:匿名使用者

和整數相對的是"小數", 不是 "負數"

整數包括負數

9樓:

八進位制可以-045這樣表示,它是十進位制的-37。c/c++都接受。

c語言中能輸出負的八進位制數嗎?177777表示負的八進位制嗎?

10樓:匿名使用者

輸出的八進位制數是無符號的,前面沒有負號,但它表示的十進位制數可以是負的,例如-1的八進位制輸出為37,777,777,777,但由於-1補碼全為1,所以八進位制數才為負,一般的數只要第一位為1那麼就是負數,而要定義一個負的八進位制數可以加負號,如:int a = -011.

177777表示的十進位制數為65535是一個正數

八進位制數有負數嗎

11樓:c離水

首先你得明白什麼是負數,一般負數是以二進位制補碼形式儲存在記憶體中的,即反碼加1,而最高位則代表了符號位,如果為1則說明為負數,否則為整數,因此,按道理說,如果沒有定義為unsigned型別的話,不管什麼進製表現,只要最高位為1,都是負數。

12樓:***x櫻

有啊,-077就是-63

13樓:匿名使用者

首先任何進位制數的首位數字都不應該是0 (整數) 。

所以-077的寫法是有誤的,因為8^0不是有理數。

c語言十六進位制數和八進位制數有沒有負數?

14樓:匿名使用者

可以肯定的回答:十六進位制數和八進位制數有負數,只需要在前面加上負號-即可。

例如:十六進位制負數(-ox123abc),八進位制負數(-o1234567)。

從計算機原理來說,不管是十進位制,八進位制還是十六進位制,在記憶體裡面都是以二進位制的方式儲存。所以對於計算機來說,不管是啥進位制,負不負數的,表示方法都相同。整數型別都以補碼儲存,最高位表示正負號,0表示正數,1表示負數。

15樓:匿名使用者

都合法,有沒有負數時看你的定義,如果不是unsigned 就有負數,而且你的都合法

c語言裡的八進位制跟十六進位制有負數嗎?

16樓:手機使用者

示的整數,我們都知道整數是可以是正數或負數的,所以這樣表示沒有問題。

不論是二進位制、八進位制、十進位制、十六進位制甚至是三十二進位制還是多少多少進位制,都只是一種數值的表示方法而已,它們歸根結底表示的都是整數,理解了這一點就好了。

----------------------對補充資訊的回答:

我說過,這些只是不同進位制對整數的表示方法。八進位制、十六進位制同樣可以表示負數。比如你舉的例子,-1這個值,十六進位制表示為0xffffffff。

這裡面第一位數(就是0x後面的第一個f),它的二進位制值是1111,這4個1的第一位1就是符號位,為0表示整個數為正值,為1表示整個數為複製。

也就是說,0x8-0xf開頭的十六進位制數就是負數。

八進位制類似。

再說一句,計算機程式中,我們平時的正負號(+和-)是為了描述十進位制數使用的,其他進位制有自己的正負值表示方法,並不使用正負號。

17樓:

c語言的變數可以定義為有符號數或者無符號數,有符號數就有正負的區別,最高位定義為符號位,1代表負數,0代表正數。

18樓:匿名使用者

有負數,只不過在定義的時候無符號數和有符號數在記憶體裡面的表示方式是有區別的

19樓:德昂當

c語言是允許負數,但在一個數字前加 - 是十進位制對負數的表示法。

要求的是八進位制和十六進位制 這兩種進位制就不是用在前面加 - 表示負數

c語言十進位制數轉化為二進位制數,C語言 十進位制數轉化為二進位制數

思路 十進位制整數轉換為二進位制整數採用 除2取餘,逆序排列 法。即用2整除十進位制整數,可以得到一個商和餘數 再用2去除商,又會得到一個商和餘數,如此進行,直到商為0時為止,然後把先得到的餘數作為二進位制數的低位有效位,後得到的餘數作為二進位制數的高位有效位,依次排列起來。include stdi...

c語言十進位制轉二進位制,C語言十進位制轉二進位制

何老師 答疑 十進位制轉二進位制可以使用庫函式itoa。itoa函式原型 char itoa int value,char string,int radix 功能 將任意型別的數字轉換為字串。在中與之有相反功能的函式是atoi。nt value 被轉換的整數,char string 轉換後儲存的字元...

在C語言中,輸入十進位制數,將其轉化為二進位制數,八進位制數,十六進位制數,並輸出(要求用函式來實現)

老馮文庫 c語言程式 include include include define max 33 char signs 十進位制數轉換為二進位制數 字串表示 char dectobin long num 十進位制數轉換為八進位制數 字串表示 char dectooct long num 十進位制數轉...