C语言教程
C语言控制语句
C语言函数
C语言数组
C语言指针
C语言字符串
C语言数学函数
C语言结构
C语言文件处理
C预处理器

C 二进制转十进制的程序

二进制与十进制转换的C程序

在本示例中,您将学习通过创建用户定义函数手动将二进制数转换为十进制数,反之亦然。
要理解此示例,您应该了解以下C 编程 主题:
C 函数 C 用户定义函数

示例 1: 将二进制数转换为十进制数的 C 程序

// convert binary to decimal
#include <stdio.h>
#include <math.h>
// function prototype
int convert(long long);
int main() {
  long long n;
  printf("Enter a binary number: ");
  scanf("%lld", &n);
  printf("%lld in binary = %d in decimal", n, convert(n));
  return 0;
}
// function definition
int convert(long long n) {
  int dec = 0, i = 0, rem;
  while (n!=0) {
    rem = n % 10;
    n /= 10;
    dec += rem * pow(2, i);
    ++i;
  }
  return dec;
}
输出
Enter a binary number: 1101
1101 in binary = 13 in decimal
在程序中,我们包含了头文件 math.h,用于在程序中进行数学运算。
我们要求用户输入一个二进制数并将其传递给 convert() 函数以将其转换为十进制。
假设 n = 1101。让我们看看 convert() 函数中的 while 循环是如何工作的。
n != 0 rem = n % 10 n/= 10 i dec += rem * pow(2, i)
1101 != 0 1101 % 10 = 1 1101/10 = 110 0 0 + 1 * pow(2, 0) = 1
110 != 0 110% 10 = 0 110/10 = 11 1 1 + 0 * pow(2, 1) = 1
10 != 0 11% 10 = 1 11/10 = 1 2 1 + 1 * pow(2, 2) = 5
1 != 0 1% 10 = 1 1/10 = 0 3 5 + 1 * pow(2, 3) = 13
0 != 0 - - - 循环终止
所以,二进制的 1101就是十进制的 13
现在,让我们看看如何将十进制数转换为二进制数。

示例 2: C 程序将十进制数转换为二进制数

// convert decimal to binary
#include <stdio.h>
#include <math.h>
long long convert(int);
int main() {
  int n, bin;
  printf("Enter a decimal number: ");
  scanf("%d", &n);
  bin = convert(n);
  printf("%d in decimal =  %lld in binary", n, bin);
  return 0;
}
long long convert(int n) {
  long long bin = 0;
  int rem, i = 1;
  while (n!=0) {
    rem = n % 2;
    n /= 2;
    bin += rem * i;
    i *= 10;
  }
  return bin;
}
输出
Enter a decimal number: 13
13 in decimal = 1101 in binary
假设 n = 13。让我们看看 convert() 函数中的 while 循环是如何工作的。
n != 0 rem = n % 2 n/= 2 i bin += rem * i i * = 10
13 != 0 13% 2 = 1 13/2 = 6 1 0 + 1 * 1 = 1 1 * 10 = 10
6 != 0 6 % 2 = 0 6/2 = 3 10 1 + 0 * 10 = 1 10 * 10 = 100
3 != 0 3 % 2 = 1 3/2 = 1 100 1 + 1 * 100 = 101 100 * 10 = 1000
1 != 0 1 % 2 = 1 1/2 = 0 1000 101 + 1 * 1000 = 1101 1000 * 10 = 10000
0 != 0 - - - 循环终止
因此,十进制的 13是二进制的 1101
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4