c - 二进制转十进制的公式

标签 c

我正在尝试编写一个程序将二进制输入更改为十进制,我在另一个网站上看到了这段代码,但我不明白此代码中的公式如何将二进制输入更改为十进制。

#include <stdio.h>

int main() {

    long int binaryNumber, decimalNumber = 0, j = 1, remainder;

    printf("Enter any binary number: ");
    scanf("%ld", &binaryNumber);

    while (binaryNumber != 0) {
         remainder = binaryNumber % 10;
        decimalNumber = decimalNumber + remainder * j;
        j = j * 2;
        binaryNumber = binaryNumber / 10;
    }

    printf("Equivalent decimal value: %ld", decimalNumber);

    return 0;
}

最佳答案

此代码使用模运算从输入的二进制数右侧选取 1 或 0 并将其存储在余数中。然后,存储在余数中的每个 1 或 0 乘以它所表示的值(用 j 表示),然后添加到 decimalNumber 中。然后将二进制数除以 10,将所有数字右移。如此重复,直到二进制数中不再有 1。

关于c - 二进制转十进制的公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36297041/

相关文章:

c - Keil C51 在编译时不为结构指针分配内存

c - 当 -lm 静态链接时,运行时出现段错误 - 在 64 位 AMD 的 14.04.1 LTS 上转储核心

java - 有没有办法在编译时为Java定义一个常量值

c - a、&a 和 *a 之间有什么区别?

c - IEEE 浮点表示

c - C 中删除列表节点的这一段是什么意思

.net - 如何将枚举参数从组合框传递到另一个类(winform)

C 随机,有问题

C 程序在 gcc 和 llvm 编译器中的行为不同

c - Unix C - 为 64 位中断编译 "dirname"