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]);
}