編程十進制轉八進制
A. c語言程序十進制的數轉換成八進制的數
C語言程序十進制的數轉換成八進制的數的辦法:
#include <stdio.h>
#include <math.h>
void main()
{
int n,a,sum = 0,i =0;
printf("十進制輸出一個數n
");
scanf("%d",&n);
while(n)
{
a = n%8;
n = n/8;
sum += a*pow(10,i);
i++;
}
printf("八進制輸出sum:%d",sum);
}
B. 10進制數怎麼轉8進制
採用除8取余法。
C. 計算機二進制,十進制,八進制,十六進制怎麼轉換
十進制轉換:
所以轉換成的二進制數字為:100101
2、八進制到二進制:一個八進制的位拆分成一個三位的二進制數
比如:[八進制]616
6拆分成110
1拆分成 001
6拆分成 110
所以轉換成的二進制數字為:110001110
3、十六進制到二進制:一個八進制的位拆分成一個四位的二進制數
比如:[十六進制]616
6拆分成 0110
1拆分成 0001
6拆分成 0110
所以轉換成的二進制數字為:11000010110
八進制轉換:
1、十進制到八進制:除8取余數 最後把余數倒過來
同時我們也可以先將十進制轉換成二進制,然後將二進制又轉換成八進制
比如:2456 轉化成八進制數字:4630
2456/8=307,餘0;
307/8=38,餘3;
38/8=4,餘6;
4/8=0,餘4。
將所有餘數倒序相連,得到結果:4630。
因此十進制的2456轉換為八進制結果為4630。
2、二進制到八進制轉換 7=4+2+1 111 八進制最大的數字是7轉換成二進制剛好是111,佔3個位
每三個二進制數為一組,轉成一個八進制數位,如果二進制高位不足3位時,用零填補。
比如:10011011
010 011 011
2 3 3
因此二進制的10011011轉換為八進制結果為233。
十六進制轉換:
1、十進制到十六進制:除16倒著取余數
同時我們也可以先將十進制轉換成二進制,然後將二進制又轉換成十六進制
比如說:1610轉換成十六進制
直接轉16進制:
1610/16=100……10(A);
100 /16= 6……4;
6 /16= 0……6;
故:1610(10)=64A(16).
2、二進制到十六進制15=8+4+2+1 1111 十六進制最大數字是F,即15轉換成二進制1111,剛好佔4個位
每四個二進制數為一組,轉成一個十六進制數位,如果二進制高位不足3位時,用零填補。
比如:1110011011
0011 1001 1011
3 9 B
因此二進制的1110011011轉換為十六進制39B
拓展資料:
2進制,是供計算機使用的,1,0代表開和關,有和無,機器只認識2進制。
10進制,當然是便於我們人類來使用,我們從小的習慣就是使用十進制,這個毋庸置疑。
16進制,內存地址空間是用16進制的數據表示, 如0x8049324。
編程中,我們常用的還是10進制。
比如:int a = 100,b = 99;
不過,由於數據在計算機中的表示,最終以二進制的形式存在,所以有時候使用二進制,可以更直觀地解決 問題。但二進制數太長了。比如int 類型佔用4個位元組,32位。比如100,用int類型的二進制數表達將是:
0000 0000 0000 0000 0110 0100
面對這么長的數進行思考或操作,沒有人會喜歡。因此,用16進制或8進制可以解決這個問題。因為,進制越大,數的表達長度也就越短。
參考資料:
網路--二進制
D. 求一道編程題:將一個十進制數轉化成為一個八進制數
八進制就是逢8進1。
八進制數採用 0-7這八數來表達一個數。
八進制數第0位的權值為8的0次方,第1位權值為8的1次方,第2位權值為8的2次方…
所以,設有一個八進制數:1507,轉換為十進制為:
用豎式表示:
1507換算成十進制。
第0位 7 * 80 = 7
第1位 0 * 81 = 0
第2位 5 * 82 = 320
第3位 1 * 83 = 512 +
--------------------------
839
同樣,我們也可以用橫式直接計算:
7 * 80 + 0 * 81 + 5 * 82 + 1 * 83 = 839
結果是,八進制數 1507 轉換成十進制數為 839
將十進制數120轉換成八進制數。
用表格表示:
被除數 計算過程 商 余數
120 120/8 15 0
15 15/8 1 7
1 1/8 0 1
120轉換為8進制,結果為:170。
E. 用C編寫十進制數轉換八進製程序
其實我看你是了解一些八進制和c語法的,因為你使用了scanf("%o",&a);
但是你的代碼有很多很多的錯誤。。。不是一下就能說明的。舉些錯誤的地方吧:
1)
tra(a);不對,既然你的函數是int
tra(),而且返回了s,那麼應該是a=tra();
2)
s的初始值沒有,應該是int
s=0;吧,另外b這一變數貌似沒有用處。。。
最簡單的方法就是下面的代碼,你考慮的太復雜了,呵呵:
#include"stdio.h"
int
main()
{
int
a;
scanf("%o",&a);
printf
("%d\n",a);
}
當輸入10(8進制)的時候,會輸出8(10進制)。
望採納!
F. C 編程 把十進制數轉換成八進制數
/*
Description: 十進制數轉化成相應的二、八、十六或其它進制
*/
#include<stdio.h>
void convert(int num,int base);//列印轉換後的數字的函數原型
main()
{
int num,base;//num代表要轉換的數,base代表要轉換的進制
printf("Please input a decimal number:\n");
scanf("%d",&num);
printf("please input the base:\n");
scanf("%d",&base);//輸入要轉換的數字與進制
printf("The corresponding binary number is:");
convert(num,base);//調用列印轉換後的數字的函數
system("pause");
return 0;
}
void convert(int num,int base)//定義列印轉換後的數字的函數
{
int m=1,n,i=0;//m為試探小於數字的最大位值,b為進制的符號值,i為小於數字的最大位
while(m<=num)//試探求最大位值
m=m*base;
m=m/base;
while(m>0)//當位不為0時循環
{
n=num/m;
if(n<9)//由於轉換為大於十進制的進制時,會輸出字母,故判斷符號值是否大於10
printf("%d",n);
else
printf("%c",n-10+'A');
num=num%m;
m=m/base;
}
}
你要的八進制已經包括進去了!
G. 編程:輸入任意一個十進制數,將其轉換成八進制和十六進制的數輸出。
以下是c++的:
#include
using
namespace
std;
int
main()
{
int
a,b,c,d;
cout<<"請輸入待轉換的數:";
cin>>a;
//二進制分別計算每一位
if(a==0)cout<
b=a;c=0;d=1;
while(b!=0)
{
c+=(b%2)*d;//依次把b除以2的余數寫在c的對應位置上
b=b/2;
d*=10;
}
cout<
//八進制和十六進制使用格式化輸出即可,oct表示八進制,hex表示十六進制
cout<
cout<}
H. 用c語言編程把一個十進制數轉化為八進制數
先將十進制數轉換為二進制數,然後就是從低位開始,每三位對應一位,不足補0
比如-32的代碼是10101110(隨便寫的)
轉換之後就是256,前面一個不足三位,在最前面補0
010
101
110
2
5
6