二进制转换十进制,八进制,十六进制

来源:百度知道 编辑:UC知道 时间:2024/05/18 00:52:31
看不懂这个讲法,请教各位.
说二进制从右向左每三位分一组,然后将每一组的二进制转换为八进制的一个数位的值,就可以得到相应的八进制数.
给的是这个题: 01 101 011 101 等于八进制的1535
我不明白怎么就知道101等于5呢,011就等于3呢,有没有公式算呢?还有,最左边只有两位了,不是3位分一组吗?不足3位的是怎么算的,请各位帮忙.
谢谢

在数制中,还有一个规则,这就是,N进制必须是逢N进一。

对于多位数,处在某一位上的“l”所表示的数值的大小,称为该位的位权。例如十进制第2位的位权为10,第3位的位权为100;而二进制第2位的位权为2,第3位的位权为4,对于 N进制数,整数部分第 i位的位权为Ni-1,而小数部分第j位的位权为N-j。

l.十进制数的特点是逢十进一。例如:

(1010)10 =1× 103+0× 102+1× 101+0× 100

2.二进制数的特点是逢二进一。例如:

(1010)2 =l× 23+0 × 22+l× 21+0 × 20=(10)10

3.八进制数的特点是逢八进一。例如:

(1010)8 =l× 83+0 × 82+l× 81+0 × 80=(520)10

4.十六进制数的特点是逢十六进一。例如:

(BAD)16 =11× 162+10×l61+13×160=(2989)10

二进制:01 101 011 101
(101)2=(5)8
(011)2=(3)8
(001)2=(1)8
从右向左,每3位分一组,不足一组左边补0

编写c++程序运行就可以了
#include<iostream.h>
void int2bin(int var)
{
if (var==1){
cout<<"1";
}else{
int2bin(var/2);
cout<<var%2;
}
}
void main()
{
int a;
cout<<"输入一个大于0的整数:";
cin>>a;

int2bin(a);

}