16进制数fe,表示成二进制数是11111110 8进制数是376
16进制数转二进制数,一位16进制数用四位二进制数替代,f为15(十进制),e为14(十进制),
f(15)用二进制为1111,e(14)用二进制为1110,
fe用二进制为11111110,
一位8进制数用三位二进制数替代,低位开始,不足补0
11111110为 011 111 110
对应8进制为3 7 6 ,即376
16进制的fe转化为十进制:f=15,e=14,十进制数=15*16^1+14*16^0=254;然后转化为的二进制数:254/2=127--0, 127/2=63--1, 63/2=31---1, 31/2=15---1, 15/2=7---1, 7/2=3---1, 3/2=1---1, 1/2=0---1,则二进制数为11111110;转化为八进制:把二进制加一个0得011111110,分成011 111 110,011=3,111=7,110=6,则八进制数为376
/*
首先要知道2转10进制的规则:
该位数值(1或0)乘以二的该位位数位数减一次方
比如:二进制10,转10进制则是1*2^1+0*2^0
二进制110,转10进制则是1*2^2+1*2^1+0*2^0
……
这个程序中的power函数作用就是用于计算次方
解释下power函数:
power(double x,int n);
比如2的3次方,则power(2,3)返回2的3次方的值
有了这个函数的话,计算2进制转10进制就非常简单了
只需要判断8位数中的哪一位是1,是1的话就加上2的位数-1次方就可以了
比如8位二进制是11000111
则十进制value=power(2,7)+power(2,6)+power(2,2)+power(2,1)+power(2,0);
这个步骤可以用循环得到
很简单吧
*/
#include
using namespace std;
double power(double x,int ); //声明power函数,因为power的定义在main之后,main函数要调用的话就必须先声明
void main(void)
{
int i; //用作循环的计数器
int value=0; //结果,也就是得出的十进制
char ch; //一位二进制的值
cout<<"Enter an 8 bit binary number "; //输入提示
for(i=7;i>=0;i--) //此循环完成8位二进制的输入和累加出10进制的结果
{
//输入第i位,因为i是从7开始循环,并且i--,直到0为止,所以第一次是输入二进制的第8位(i=7),以此第7位(i=6)……
cin>>ch;
if(ch=='1') //判断该位是否为1,如果为1,就用power函数计算出2^i,并累加结果
value+=int(power(2,i));
}
//输出结果
cout<<"Decimal calue is "<
double power(double x,int n)
{
double val=1.0; //计算累乘结果
while(n--) //循环n次,每次都*x,从而达到次方的计算
val*=x; //累乘
return(val); //返回计算结果
}