Given a number n, convert the number to its binary representation.
InputFirst line of input will contain T = number of test case. Next T lines will each have a number n. n will be between 0 and 1000000000 (10^9)
OutputFor each number print its binary form on a single line. There should be no leading zeroes in the result.
Sample Input4 5 12 25 36Sample Output
101 1100 11001 100100
1) Are you good for n = 0 ?
As we know, decimal number system uses 0-9
digits to represent a number. The base used is 10
.
Similarly, in binary number system, any number is represented using only 2 digits, 0
and 1
.
For example: Consider the number 12
12 = 1 * 10^1 + 2 * 10^2
is written as 12
in decimal form.
Now,
12 = 1 * 2^3 + 1 * 2^3 + 0 * 2^1 + 0 * 2^0
can be written in binary system as 1100
.
Any number in any base can be converted to be represented in another base. The actual value of the number does not change.
Steps for conversion from decimal to binary:num % 2
) before each division in a character array (or a string).Example of Decimal to Binary Conversion:
29 / 2 = 14 Remainder = 1 14 / 2 = 7 Remainder = 0 7 / 2 = 3 Remainder = 1 3 / 2 = 1 Remainder = 1 1 / 2 = 0 Remainder = 1
Reversing the order of remainders, gives us 11101
, which is the binary notation of decimal number 29
.
Note: The same steps can be used for conversion of decimal number to any base, say K
. Instead of continuously dividing the number by 2
, we need to divide by K
.
editorial written by shivshnkr
#include <iostream> #include <algorithm> using namespace std; /* function returns pointer to character array that stores the number in binary */ char * decimal_to_binary(int num) { char binary_string[101]; // array to hold binary string int counter = 0; // variable to store counter int remainder; // variable stores current remainder /* handle for 0 separately */ if (num == 0) { /* store binary number 0 in char array */ binary_string[0] = '0'; binary_string[1] = '\0'; return binary_string; } /* a loop that goes on dividing the number till till it becomes equal to 0 */ while (num != 0) { /* value of remainder when divided by 2 */ remainder = num % 2; /* number is continuously divided by 2 */ num /= 2; /* binary string at index counter is assigned the current remainder in character format */ binary_string[counter] = remainder + '0'; /* increment counter */ counter++; } /* we write NULL to the end of the string */ binary_string[counter] = '\0'; /* reverse the binary string and return */ reverse (binary_string, binary_string + counter); return binary_string; } int main() { int testcases; cin >> testcases; while (testcases--) { int number; // variable to store number cin >> number; //read input from stdin /* print output to stdout */ cout << decimal_to_binary(number) << endl; } return 0; }
featured solution by shivshnkr