2016-03-29 4 views
-3

Я пытаюсь написать программу для изменения двоичного ввода в десятичную, и я увидел этот код на другом веб-сайте, но я не понимаю, как формула в этом коде работает, чтобы изменить двоичный код на десятичный.Формула для двоичного кода до десятичного числа

#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; 
} 
+0

Итак, что именно вы не понимаете? – MikeMB

+1

Почему бы не построить его и проследить через выполнение с помощью отладчика? –

+0

@MartinJames: Это была моя первая мысль, но я подумал, что мне будет хорошо. –

ответ

1

Этот код использует операцию по модулю, чтобы выбрать 1 или 0 от правой стороны двоичного числа, который был введен и хранить его в remainder. Каждый 1 или 0, хранящийся в remainder, затем умножается на его значение, представленное j, а затем добавляется к decimalNumber. Затем двоичное число делится на 10, чтобы сдвинуть все цифры вправо. Это повторяется, пока в двоичном номере осталось больше 1.

Смежные вопросы