一、八进制转换二进制
方法:取一分三法,即将一位八进制数分解成三位二进制数,用三位二进制按权相加去凑这位八进制数,小数点位置照旧。
例:将八进制的(327)O转换为二进制的步骤如下:
1. 3 = 011;
2. 2 = 010;
3. 7 = 111;
4. 读数,读数从高位到低位,011010111,即(327)O=(11010111)B。
二、八进制转换十六进制
方法:将八进制转换为二进制,然后再将二进制转换为十六进制,小数点位置不变。
例:将八进制的(327)O转换为十六进制的步骤如下:
1. 3 = 011;
2. 2 = 010;
3. 7 = 111;
4. 0111 = 7;
5. 1101 = D;
6. 读数,读数从高位到低位,D7,即(327)O=(D7)H。
扩展资料:
1、十六进制数转换为八进制
转换方法:以二进制位中介,即先将十六进制数按照一位拆四位的方法转换为二进制,在对这个二进制数使用三位合一位的方法转换为八进制。
2、二进制化为八进制
整数部份从最低有效位开始,以3位一组,最高有效位不足3位时以0补齐,每一组均可转换成一个八进制的值,转换完毕就是八进制的整数。
小数部份从最高有效位开始,以3位一组,最低有效位不足3位时以0补齐,每一组均可转换成一个八进制的值,转换完毕就是八进制的小数。
参考资料:百度百科-八进制
2、八进制化为二进制:
规则:按照顺序,每1位八进制数改写成等值的3位二进制数,次序不变。
例: (17.36)8 = (001 111 .011 110)2 = (1111.01111)2
3、八进制化为十六进制
先将八进制化为二进制,再将二进制化为十六进制。
例:(712)8 = (1110 0101 0)2 = (1CA)16
4、二进制化为八进制:
整数部份从最低有效位开始,以3位一组,最高有效位不足3位时以0补齐,每一组均可转换成一个八进制的值,转换完毕就是八进制的整数。小数部份从最高有效位开始,以3位一组,最低有效位不足3位时以0补齐,每一组均可转换成一个八进制的值,转换完毕就是八进制的小数。
例:(11001111.01111)2 = (011 001 111.011 110)2 = (317.36)8
5、十六进制化为八进制:
先用1化4方法,将十六进制化为二进制;再用3并1方法,将二进制化为8制。
例: (1CA)16 = (111001010)2 = (712)8
说明:小数点前的高位零和小数点后的低位零可以去除。
6、十进制化八进制:采用除8取余法。
例:将十进制数115转化为八进制数
8| 115…… 3
8| 14 …… 6
8| 1 …… 1
结果:(115)10 = (163)8
扩展资料:
在计算机中的应用:
八进制广泛应用于计算机系统,如PDP-8,ICL 1900和IBM大型机使用12位、24位或36位。八进制是这些基础,因为他们的最理想的二进制字缩写大小能被3整除(每个八进制数字代表三个二进制数字)。四、八到十二个数字可以简明地显示整个机器。
它也降低成本使得数字允许通过数码管,七段显示器,和计算器用于操作员控制台,他们在二进制显示使用过于复杂,然而十进制显示需要复杂的硬件,十六进制显示需要显示更多的数字。然而,所有现代计算平台使用16 - 32位,或者64位,如果使用64位,将进一步划分为八位字节。
这种系统三个八进制数字就能满足每字节需要,与最重要的八进制数字代表两个二进制数字(+ 1为下一个字节,如果有的话)。16位字的八进制表示需要6位数,但最重要的八进制数字代表(通过)只有一个(0或1)。这表示无法提供容易阅读的字节,因为它是在4位八进制数字。
参考资料:
推荐于2017-11-17
一种计数法,采用0,1,2,3,4,5,6,7八个数码,逢八进位,并且开头一定要以数字0开头。八进制的数较二进制的数书写方便,常应用在电子计算机的计算中。
例如:
10进制的32表示成8进制就是:40
10进制的9,27在八进制中分别记位11,33.
8进制的32表示成10进制就是:3×8^1+2×8^0=26
例如:
10进制的32表示成8进制就是:40
10进制的9,27在八进制中分别记位11,33.
8进制的32表示成10进制就是:3×8^1+2×8^0=26
#include<stdio.h>
#include<math.h>
int toSnumber(int a);
void main()
{
int pnumber;
scanf("%d",&pnumber);
printf("%d 对应的8进制数为:%d\n",pnumber,toSnumber(pnumber));
}
int toSnumber(int a)
{
int i,num,snum;
num=8;
i=0;
snum=0;
while(1)
{
if(a<num)
{
snum=a;
break;
}
else if(a/num>=num) //大于100小于1000
{
snum=snum+(a-(a/num)*num)*pow(10,i);
a=a/num;
i++;
}
else if(a/num<num && a/num>0) //得到最高位 和次高位
{
snum=(a/num)*pow(10,(i+1))+(snum+(a-(a/num)*num)*pow(10,i));
break;
}
}
return snum;
}