C语言中 十进制转二进制(可代替matlab中de2bi函数的功能)
代码保证能运行 直接复制使用
c语言代码
#include <stdio.h>
#include <math.h>
#include<stdlib.h> //malloc 是存放内存大小的
int* de2bi(int n, int M); // 函数体
int main() // 主函数
{
int n=6,M=16; // 假如16进制中的数字6要转化为二进制
int k = log2(M);//16进制有4位
int* dbi = (int*)malloc(k * sizeof(int));
dbi = de2bi( n , M); // 得到的二进制
for (int i = 0; i < k; i++)
{
printf("%d", dbi[i]); //验证
}
}
int* de2bi(int n,int M) //定义的函数
{
int k = log2(M);
int* bi = (int*)malloc(k * sizeof(int));
int* dbi = (int*)malloc(k * sizeof(int));
for (int i = 0; i < k; i++)
{
bi[i] = 0;
}
for (int i = 0; i < k; i++)
{
if (n == 0)
{
bi[i] = 0;
break;
}
else if (n == 1)
{
bi[i] = 1;
break;
}
else
{
bi[i] = n % 2;
n = n / 2;
if (n == 0)
{
bi[i + 1] = 0;
}
else if (n == 1)
{
bi[i + 1] = 1;
break;
}
}
}
for (int i = 0; i < k; i++)
{
dbi[i] = bi[k - i - 1];
}
return dbi;
}