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個學生的計算機等級考試成績,包括...