Puzzle/Exercise

Integer to Binary Conversion [C/C++]

More Code 2019. 4. 19. 04:28


// C/C++

// [VC] suppress error messages about obsolete & deprecated functions
#pragma warning(disable : 4996)
#define _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS_GLOBALS

#include <cstdio>
#include <cstdlib>

#define LENGTH 11

int main(int argc, char **argv)
{
char buffer[LENGTH];
int number = 0;

do {
fgets(buffer, LENGTH, stdin);
number = atoi(buffer);
} while (number < 0);

printf("%12s %d\n", "Integer", number);
printf("%12s %X\n", "Hexadecimal", number);
printf("%12s ", "Binary");

unsigned int mask = 0;

// this grotesque hack creates a bit pattern 1000...
// regardless of the size of an unsigned int
mask = ~mask ^ (~mask >> 1);

// print out all bits of n
while (mask != 0)
{
// !!x is 0 if x is 0 and 1 if x is anything else
printf("%d", !!(number & mask));
mask = mask >> 1;
}
putchar('\n');

return EXIT_SUCCESS;
}



// C/C++

// [VC] suppress error messages about obsolete & deprecated functions
#pragma warning(disable : 4996)
#define _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS_GLOBALS

#include <iostream>
#include <string>

#define LENGTH 11

using namespace std;

int main(int argc, char **argv)
{
char buffer[LENGTH];
int number = 0;

do {
fgets(buffer, LENGTH, stdin);
number = atoi(buffer);
} while (number < 0);

printf("%12s %d\n", "Integer", number);
printf("%12s %X\n", "Hexadecimal", number);

string binary = "";
int remainder = 0;

do {
remainder = number % 2;
itoa(remainder, buffer, 10); // here 10 means decimal
binary.insert(0, buffer);
number = number / 2;
} while (number != 0);

printf("%12s %s\n", "Binary", binary.c_str());

return EXIT_SUCCESS;
}