21xrx.com
2024-12-22 19:21:49 Sunday
登录
文章检索 我的文章 写文章
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;
}

我们动态分配内存,因为我们无法返回指向局部变量(在本例中为字符数组)的指针。 如果我们把它返回给一个局部变量,那么程序可能会崩溃,或者我们得到一个错误的结果。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复
    相似文章