八進位編程
.二進制與十進制的轉換
(1)二進制轉十進制
方法:"按權展開求和"
例:
(1011.01)2
=(1×23+0×22+1×21+1×20+0×2-1+1×2-2)10
=(8+0+2+1+0+0.25)10
=(11.25)10
(2)十進制轉二進制
·
十進制整數轉二進制數:"除以2取余,逆序輸出"
例:
(89)10=(1011001)2
2
89
2
44
……
1
2
22
……
0
2
11
……
0
2
5
……
1
2
2
……
1
2
1
……
0
0
……
1
·
十進制小數轉二進制數:"乘以2取整,順序輸出"
例:
(0.625)10=
(0.101)2
0.625
X
2
1.25
X
2
0.5
X
2
1.0
2.八進制與二進制的轉換
例:將八進制的37.416轉換成二進制數:
37
.
4
1
6
011
111
.100
001
110
即:(37.416)8
=(11111.10000111)2
例:將二進制的10110.0011
轉換成八進制:
0
1
0
1
1
0
.
0
0
1
1
0
0
2
6
.
1
4
即:(10110.011)2
=(26.14)8
3.十六進制與二進制的轉換
例:將十六進制數5DF.9
轉換成二進制:
5
D
F
.
9
0101
1101
1111.1001
即:(5DF.9)16
=(10111011111.1001)2
例:將二進制數1100001.111
轉換成十六進制:
0110
0001
.
1110
6
1
.
E
即:(1100001.111)2
=(61.E)16
參考資料:http://222.214.195.26/aoshai/szzh.htm
② 用函數編程:輸入一個八進制數,用函數將其轉換成相應的十進制數,並在main函數中調用該函數。
#include<stdio.h>
int o2d(char s[])
{int i,x=0;
for(i=0;s[i];i++)
if(s[i]>='0'&&s[i]<='7')x=x*8+s[i]-'0';
else
{
printf("error! ");
return -1;
}
return x;
}
int main()
{char s[20];
scanf("%s",s);
printf("%d ",o2d(s));
getch();
return 0;
}
③ 求八進制轉化為十進制的c語言思路及編程
思路:對於所有的八進制數符,按乘權求和的思想就可以實現轉化。
#include<stdio.h>
int main()
{int x=0,c;
printf("請輸入一個八進制數:");
scanf("%c",&c);
while(c>='0'&&c<'8')
{x=x*8+c-'0';
scanf("%c",&c);
}
printf("十進制數為:%d ",x);
return 0;
}
④ C語言編程,輸入十進制數輸出十六進制和八進制
#include <stdio.h>
#define N 8
void tran(int num,int k)
{
int arr[N],i;
for (i=0;i <N;i++)
{
arr[i]=num%k;
num=num/k;
if (num==0)
break;
}
printf("轉換為%d進制數為: ",k);
for (;i>=0;i--)
switch (arr[i])
{
case 10: printf("A");break;
case 11: printf("B");break;
case 12: printf("C");break;
case 13: printf("D");break;
case 14: printf("E");break;
case 15: printf("F");break;
default: printf("%d",arr[i]);
}
printf("
");
}
int main()
{
int num,choo;
loop: printf("請選擇功能:0.退出 1.十進制轉二進制 2.十進制轉八進制 3.十進制轉十六進制
");
scanf("%d",&choo);
switch (choo)
{
case 1:
printf("請輸入要轉換的十進制數:");
scanf("%d",&num);
tran (num,2);
goto loop;
case 2:
printf("請輸入要轉換的十進制數:");
scanf("%d",&num);
tran (num,8);
goto loop;
case 3:
printf("請輸入要轉換的十進制數:");
scanf("%d",&num);
tran (num,16);
goto loop;
case 0:break;
default :
printf("輸入有誤!請重新輸入!
");
goto loop;
}
}
拓展資料
C語言是一門通用計算機編程語言,廣泛應用於底層開發。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。
二十世紀八十年代,為了避免各開發廠商用的C語言語法產生差異,由美國國家標准局為C語言制定了一套完整的美國國家標准語法,稱為ANSI C,作為C語言最初的標准。 目前2011年12月8日,國際標准化組織(ISO)和國際電工委員會(IEC)發布的C11標準是C語言的第三個官方標准,也是C語言的最新標准,該標准更好的支持了漢字函數名和漢字標識符,一定程度上實現了漢字編程。
C語言是一門面向過程的計算機編程語言,與C++,Java等面向對象的編程語言有所不同。
其編譯器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
(參考資料 網路 C語言)
⑤ C語言中的八進制
除了二進制,C語言還會使用到八進制。
八進制是一種「逢八進一」的進制,它由 0~7 八個符號來描述。同樣,此處通過十進制和八進制的對比來描述八進制的表示方式。
八進制基數為8,加法運算時逢八進一,減法運算時借一當八。例如,數字 0、1、5、7、14、733、67001、25430 都是有效的八進制。
當使用八進製表示十進制數字8時,由於表示八進制的符號只有 0~7,因此,根據逢八進一的規則,需要向高位進一位,表示為10。同理,使用八進製表示十進制數字16時,繼續向高位進一位,表示為 20。
(5)八進位編程擴展閱讀
八進制轉換為十進制的源代碼如下
#include<stdio.h>
void main()
{
char *p,s[6];int n;
p=s;
printf("Please input a Octal number:");
gets(p);
n=0;
while(*(p)!='