注册 登录
编程论坛 C++教室

二进制转换八进制是怎样的思路

沧声笑 发布于 2010-10-23 09:48, 952 次点击
谢谢
8 回复
#2
m21wo2010-10-23 09:56
一种是将 二进制转换为十进制,再将十进制转换为八进制,都很简单!
第二种是 3为二进制 对应转换为一位 八进制 !就ok 了!
#3
沧声笑2010-10-23 10:01
回复 楼主 沧声笑
能不能详细说下第二种,谢谢
#4
m21wo2010-10-23 10:10
譬如 二进制 100110001 又三位二进制对应一位八进制 就可以直接化了 ,注意从低位到高位 ,先是 001 对应八进制的 1 ,110 对应八进制的 6 ,100对应八进制的 4 ,所以就可以直接化为 八进制的461。 假设二进制的位数不是 3的整数倍 ,先前补0 。 不知听懂没!
#5
沧声笑2010-10-23 10:15
回复 3楼 沧声笑
真不好意思,可能是没说明意思,是说用编程求这个的思路,这个转换知道,抱歉,谢谢。
#6
m21wo2010-10-23 10:41
这很简单好不好!自己想去!
#7
zfan852010-10-24 14:09
其实跟10进制换2进差不多的
#8
xin3109232010-10-24 20:56
比如说  二进制100101110   转化成八进制   从右往左算   拆分称 110  101  100  110为6  101 为5  100为4  所以 转化后就变称456  八进制 是三位转换   十六进制是  四位转换   记住都要从右往左算  不足位 补零
#9
沧声笑2010-10-24 22:38
#include<iostream>
using namespace std;

int sum(int m,int x);
int main()
{
    int k=0,w,n=0,s=1,i,a,b,j=1,l=0;
    char c;
    cout <<"输入一个二进制数:";
    for(i=7;i>=0;i--)
    { cin >>c;
        if(c=='1')
            n+=sum(2,i);
    }
    cout <<"十进制="<<n<<endl;
     a=n;
    while(n!=0)
    {  
       w=n%8;
       k+=w*s;
       s=s*10;
       n=n/8;
    }
     cout<<"八进制="<<k<<endl;   
    while(a!=0)
    {  
       b=a%16;
       a=a/16;
       if(b>=10)
       cout <<"十六进制="<<char(b+'A'-10);
       else           
       {l+=b*j;
        j=j*10;
       cout<<"十六进制="<<j<<endl;}
    }         
}
 int sum(int m,int x)
{
    int val=1;
    while (x--)
    val*=m;
    return val;
}
还是自己结贴
1