Skip to content
This repository was archived by the owner on Sep 7, 2025. It is now read-only.
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 65 additions & 27 deletions algorithms/converting/binary_to_decimal.c
Original file line number Diff line number Diff line change
@@ -1,45 +1,83 @@
// Author: Murilo Ferreira

#include <stdio.h>
#include <math.h>

int binaryToDecimal(int binary) {
// Method 1: Using iterative multiplication
int binaryToDecimalUsingMultiplier(int binary) {
int decimal = 0;
int multiplier = 1;
while (binary != 0) {
decimal += (binary % 10)* multiplier;
decimal += (binary % 10) * multiplier;
binary /= 10;
multiplier *= 2;
}
return decimal;
}

int main() {
int bin;
printf("Enter your binary number: ");
scanf("%d" ,&bin);
int dec = binaryToDecimal(bin);
printf("The number is: %d \n" ,dec);
return 0;
// Method 2: Using pow function
int binaryToDecimalUsingPow(long long binary) {
int decimal = 0, i = 0, remainder;
while (binary != 0) {
remainder = binary % 10;
binary /= 10;
decimal += remainder * pow(2, i);
++i;
}
return decimal;
}
// added another method
#include <math.h>
#include <stdio.h>
int convert(long long n);
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;

void displayMenu() {
printf("\n==========================\n");
printf("Choose a conversion method:\n");
printf("1. Iterative multiplication\n");
printf("2. Pow function\n");
printf("3. Exit\n");
printf("==========================\n\n");
}

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;
int validateBinaryInput(long long binary) {
while (binary != 0) {
if (binary % 10 > 1) {
return 0;
}
binary /= 10;
}
return 1;
}

int main() {
int choice;
long long binary;

while (1) {
displayMenu();
printf("Enter your choice: ");
scanf("%d", &choice);

if (choice == 3) {
printf("Exiting program. Goodbye!\n");
break;
}

printf("Enter a binary number: ");
scanf("%lld", &binary);

if (!validateBinaryInput(binary)) {
printf("Invalid binary number. Please enter a valid binary number (only 0s and 1s).\n\n");
continue;
}

if (choice == 1) {
printf("Using iterative multiplication: %lld in binary = %d in decimal\n", binary, binaryToDecimalUsingMultiplier((int)binary));
} else if (choice == 2) {
printf("Using pow function: %lld in binary = %d in decimal\n", binary, binaryToDecimalUsingPow(binary));
} else {
printf("Invalid choice. Please select 1, 2, or 3.\n");
}

printf("\n");
}
return dec;

return 0;
}