C language: octal to binary (can be negative or decimal)

C language octal to binary, you can enter negative numbers and decimals. Please correct me if I am wrong.

#include<stdio.h>
#include<math.h>
void f(int m,int bit,int a[6][3]){
    
      //将一位八进制数转化为三位二进制数
		for(int i=2;i>=0;i--){
    
    
			a[bit][i]=m%2;
			m=m/2;
		}
}
void main(){
    
    
	double x;
	int bit=0,m,a[6][3]={
    
    0},b[6][3]={
    
    0};  //m存放八进制数整数部分,bit记录第几位数,a数组存放整数,b数组存放小数
	printf("请输入一位八进制数(-377777.777777-377777.777777):\n");
	scanf("%lf",&x);
	if(x<0){
    
    		//如果输入的数是负数则二进制最高位为1
		a[5][0]=1;
		x=-x;
	}
	m=x;
	x=x-m;   //x存放八进制数的小数部分
	while(m){
    
       //八进制整数部分转化为二进制存入数组a
		f(m%10,bit,a);
		bit++;
		m=m/10;
	}
	bit=0;
	while(bit<6){
    
       //八进制小数部分转化为二进制存入数组b
		m=x*10;
		f(m,bit,b);
		bit++;
		x=x*10-m;
		x=x+9*pow(10,-6);
	}
	for(int i=5;i>=0;i--)   //输出二进制整数部分
		for(int j=0;j<3;j++)
			printf("%d",a[i][j]);
	printf(".");
	for(int i=0;i<6;i++)   //输出二进制小数部分
		for(int j=0;j<3;j++)
			printf("%d",b[i][j]);
}

Guess you like

Origin blog.csdn.net/m0_61916291/article/details/121627938