C 十进制转二进制
2021-07-06 21:55:45
深夜i
--
--
C
进
制
转
二
进
制
C 中的十进制到二进制将整数从十进制数系统(基数 10)转换为二进制数系统(基数 2)。 整数的大小假定为 32 位。 我们使用按位运算符“AND”来执行所需的任务。 我们使用 for 循环将原始数字右移 31, 30, 29, ..., 1, 0 位并按位 AND 用 1(one) 获得的数字如果结果为 1,则该位为 1,否则为零( 0)。
C程序将十进制转换为二进制
#include <stdio.h>
int main()
{
int n, c, k;
printf("Enter an integer in decimal number system\n");
scanf("%d", &n);
printf("%d in binary number system is:\n", n);
for (c = 31; c >= 0; c--)
{
k = n >> c;
if (k & 1)
printf("1");
else
printf("0");
}
printf("\n");
return 0;
}
程序的输出:
下载十进制二进制程序。
此代码仅打印整数的二进制。 不过,我们可能希望对二进制执行操作,因此在下面的程序中,我们将二进制存储在一个字符串中。 我们创建了一个函数,它返回一个指向它的指针(传递的数字的二进制)。
C中十进制到二进制的转换
#include <stdio.h>
#include <stdlib.h>
char *decimal_to_binary(int);
int main()
{
int n;
char *p;
printf("Enter an integer in decimal number system\n");
scanf("%d", &n);
p = decimal_to_binary(n);
printf("Binary string of %d is: %s\n", n, p);
free(p);
return 0;
}
char *decimal_to_binary(int n)
{
int c, d, t;
char *p;
t = 0;
p = (char*)malloc(32+1);
if (p == NULL)
exit(EXIT_FAILURE);
for (c = 31 ; c >= 0 ; c--)
{
d = n >> c;
if (d & 1)
*(p+t) = 1 + '0';
else
*(p+t) = 0 + '0';
t++;
}
*(p+t) = '\0';
return p;
}
我们动态分配内存,因为我们无法返回指向局部变量(在本例中为字符数组)的指针。 如果我们把它返回给一个局部变量,那么程序可能会崩溃,或者我们得到一个错误的结果。
上一篇:
idea打包java可执行jar包
下一篇:
查找 nCr 和 nPr 的 C 程序
评论区