c語言八進位輸入的問題,C語言中, o八進位輸出,怎麼算的,能說具體嗎?

2025-01-20 13:55:05 字數 5291 閱讀 3714

1樓:匿名使用者

根據你程式中scanf("%d,%o",&a,&b);這句語句,你的輸入格式應該是:m(乙個十進位數),n(乙個八進位數)(回車)m中各位數值的範圍要求0-9n中各位數值的範圍要求0-7對於n,我進一步說明一下:它是從第一位開始識別提取,直到第乙個非0-7的數。

例如:對於n,如果輸入07328123(則實際賦給n的八進位數是0732)如果輸入232a23289(則實際賦給n的八進位數是232)如果輸入9213(則n為隨機數,因為你輸入數的第一位就不符合要求)

2樓:匿名使用者

#include

void main()

int a,b;

scanf("%d%o",&a,&b);/去掉其中的逗號「,」

b+=a;printf("%d",b);

說明:scanf(),在輸入八進位的時候,如果不是0到7的數字就不接收。你輸入8 18;接收的結果是a=8 b=1,而不是把數18轉換成八進位22

3樓:匿名使用者

在八進位裡面只有0-7八個數字 你怎麼輸入18呢 沒有8啊。

c語言中,%o八進位輸出,怎麼算的,能說具體嗎?

4樓:yesyes科

1、首先開啟microsoft visual c++軟體,新建好檔案後,輸入如下內容。

2、然後在之間輸入函式的內容,先定義變數c1,變數的型別為char,字元型。

3、然後,用printf語句進行輸出。

4、當內容輸入好後,點選圖中工具按鈕,對程式進行檢測。

5、檢測到沒有錯誤後,點選執行(紅色感嘆號),彈出的黑色視窗中為最終結果,可以看到大寫字母「a」顯示在上面。

5樓:網友

%o為8進位輸出,其實就是將後續引數的值,轉換為8進位形式,然後進行輸出。

計算的時候,實際上就是把10進位數轉為8進位。

轉換方法為除8取餘法,具體如下:

1 整數部分除以8,記錄餘數;

2 判斷商是否為0,如果為0,則執行3,否則繼續執行1;

6樓:網友

因為計算機裡負數全是補碼的形式,沒有正碼,所以-1其實在計算機裡是以補碼的形式出現的。

負數的補碼計演算法則如下:

1,其實就是 1 000000000000001 第乙個1為符號位,1代表「-」號,0代表「+」號,後面的是數值,為1,求它的補碼,先將數值部分取反,符號位不變,就變成 111111111111110,在對新的數值部分加1,就變成111111111111111

了,換算成八進位就是77777,再把前面的符號位加上,就是:

177777了。

至於補碼規則為什麼是取反加1呢,計算機就是這麼規定的。

7樓:公尺嵐

計算是用位計算。

比如:十進位8換成2進位:00 001 000

然後從右到左3位一組,每組按2進位換十進位算,得10(逢八進一),應為8進位不允許出現8及以上的所以,取3位。

8樓:

(1 111 111 111 111 111)2=(177777)8

說明,從右向左,將二進位3位一組,每一組對應一位8進位,111對應7。

c語言中的八進位

9樓:愛夏的你呀

除了二進位,c語言還會使用到八進位。

八進位是一種「逢八進一」的進位,它由 0~7 八個符號來描述。同樣,此處通過十進位和八進位的對比來描述八進位的表示方式。

八進位基數為8,加法運算時逢八進一,減法運算時借一當八。例如,數字 都是有效的八進位。

當使用八進位表示十進位數字8時,由於表示八進位的符號只有 0~7,因此,根據逢八進一的規則,需要向高位進一位,表示為10。同理,使用八進位表示十進位數字16時,繼續向高位進一位,表示為 20。

10樓:匿名使用者

八進位整形常量,以0為字首,如012就是八進位的12你所用的 表示法是\ddd

表示3位八進位數。

101即八進位數101,換成十進位數為65\012即八進位數12,換成十進位數為10

11樓:匿名使用者

\ddd表示1~3位八進位數所代表的字元。

xhh表示1~2位十六進位數所代表的字元。

所以、\012就是八進位數的12

101也是八進位數的101,即是十進位的65

12樓:匿名使用者

你可以這樣看。

012個位是8的0次方也就是1 然後每往前一位就是8的次方數增加1.

然後拿你的數012去乘次方得出來的數2乘1得的一次方是8乘以1得8.

所有進位都可以這樣算 不過就是什麼進位就是什麼值的次方就是了。

13樓:匿名使用者

\012的0也可以不加,類似的有\1(即\001)等。

14樓:卑運浩喜涵

0b開頭的是二進位。

0開頭的是八進位。

0x開頭的是十六進位。

15樓:匿名使用者

其實這好理解。

不要去刻意記怎麼算的。

其實無論是10進位也好8進位也罷,還有16進位啊,2進位啊,其實這些都有乙個共通點。

10進位是滿10進1,8進位是滿8進1,以此類推,這樣無論什麼進位你就都知道是怎麼來的了,不過要多練練用到和10進位一樣熟練對你來說不是難題。

c語言,二進位,八進位,十六進位的問題

16樓:萊靈慶司

長度為1個位元組的二進位的整數,若採用補碼錶示,且由4個「1」和4個「0」組成,則可表示的最小整數為___

a.-127

b.-121

c.-15d.-7

答蔽閉歷:搞不清,就挨個算算:

127的補碼是:1000

121的補碼是:1000

15的補碼是:1111

7的補碼是:1111

只有-121的補碼是由4個「1」和4個「0」組成,答案選。

b.-121。

在計算機態談科學中,常常會遇到用二進位、八進位、十六進位等表示的資料。對於算術表示式1023-377q+100h,其運算結果是___

答:q是8進位的標記,h是16進位的標記。

1023-377q+100h,換算成十進位,就是:

答案應選。。巨集搜。

-8的二進位形式(c語言)

17樓:和小敘

變數在記憶體當中的儲存方式都是二進位數,而二進位只有0或1兩種情況。那這樣的話,就要求這裡個數中有乙個表示正號,乙個表示符號。這就規定了負號用1表示,正號用0表示。

如果你的-8是乙個char(字元型)的資料的話,那它就佔乙個儲存單元,乙個儲存單元就是乙個位元組(byte),共八位。

好,前面說變數數值在記憶體當中都是二進位,如果是正數,8位全部表示資料,沒有符號位,轉換成二進位就和簡單了。

如果是負數,最高位就表示符號位,其餘的7位表示資料位。所以單純是用二進位表示的話,-8就應該是10001000。

補充一點:負數在記憶體當中是以它的補碼儲存的。補碼的求法是:

1、取絕對值。

2、取反。3、加1

所以-8在記憶體當中的二進位形式是:11111000,如果我們用乙個無符號變數去讀這塊記憶體,結果會是:十六進位的f8。

為什麼是這個結果?因為只有十進位才有正負之分,而十六進位和二進位是沒有正負之分的,在記憶體當中的形式是這樣,它只是一種狀態,看我們用什麼表示方法的變數去讀這塊記憶體了,如果你用的是有符號十進位的變數讀它,它就是乙個負數,轉換成十六進位,可就沒有符號在前面了。

18樓:有人喊我超哥

計算機規定乙個有符號數值最高位表示正負,所以比如是8位表示的話,表示為1000 1000

c語言八進位十六進位真值問題

19樓:篤俠

關於八進位和十六進位的正負性,有如下幾種情況:

1. 如果直接使用,都認為是正值,比如。

printf("%d",2*0x8008);

輸出 65552

2. 如果將其賦值給有符號變數,則(化為二進位後)最高位為1表示負數,為0表示正。比如。

short int y=0x8008;

printf("%d",y);

輸出 -32760

3. 如果將其賦值給無符號變數,則為正值。比如unsigned short int x=0xffff;

printf("%d",x);

輸出 65535

4. 如果在表示式中參與運算,並將運算結果賦值給有符號變數,與情況2相同。比如。

short int y=2*0x4008;

printf("%d %d",2*0x4008,y);

輸出 32784 -32752

20樓:_冰靈

01234,0123456是八進位,0x1234,0x8008是十六進位,八進位和十六進位都沒有負值。

21樓:網友

數值有正負之分,計算機就用乙個數的最高位存放符號(0為正,1為負).

因此,八進位01234轉化為二進位1010011100 最高位為1,故為負。

十六進位0x1234轉化二進位為0001 0010 0011 0100 最高位0,故為正。

十六進位0x8008轉化二進位為1000 0000 0000 1000 最高位為1 故為負。

輸入乙個八進位數,輸出其後四位,c語言

22樓:莊政警

後四位指的是二進位的後四位,要得到後四位只要和二進位數字1111按位做與運算就行。

**如下:#include

int main()

int a;

printf("請輸入乙個八進位數:");

scanf("%o", &a); //%o是輸入8進位printf("結果是:");

printf("%03o", a&15); //15是二進位1111

return 0;

執行:求補碼這個看圖應該是16位的補碼,也就是對65536求補#include

int main()

int a;

printf("請輸入乙個八進位數:");

scanf("%o", &a);

printf("結果是:");

printf("%o", 65536-a); //對65536求補碼。

return 0;執行:

c語言 進位制轉換 查錯,C語言進位制轉換問題

include include malloc函式標頭檔案。define initsize 100 初始分配的空間大小。typedef int elemtype 要據需要定義的資料型別。typedef struct linkstack void initstack linkstack s 初始化棧。i...

c語言中SIZEOF的問題,c語言中的 sizeof 問題

我來回答你的問題 sizeof函式的意思是統計變數長度。int的長度長2個位元組 char的長度長1個位元組 float的長度長4個位元組 union uuua的長度取決於其中成員中最長的變數的位元組長度,在這裡為char型別,共五個元素值,長度為5。那麼開始統計總長度也就是2 1 4 5 12 希...

C語言檔案輸入輸入問題,C語言程式,把輸入的資訊寫入檔案中的問題

使用fopen函式開啟檔案時,將檔案使用方式更換為 a 如,fp fopen x.txt a 即可實現檔案追加讀寫。fopen c 123.txt a fp fopen x.txt a 怎樣用c語言輸入檔案中的某個內容。例12 2 已知一個文字檔案f.txt中儲存了5個學生的計算機等級考試成績,包括...