C
program to convert decimal to binary: c language code to convert an
integer from decimal number system(base-10) to binary number
system(base-2). Size of integer is assumed to be 32 bits. We use bitwise
operators to perform the desired task. We right shift the original
number by 31, 30, 29, ..., 1, 0 bits using a loop and bitwise AND the
number obtained with 1(one), if the result is 1 then that bit is 1
otherwise it is 0(zero).
Download Decimal binary program.
Output of program:
Above code only prints binary of integer, but we may wish to perform operations on binary so in the code below we are storing the binary in a string. We create a function which returns a pointer to string which is the binary of the number passed as argument to the function.
Memory is allocated dynamically because we can't return a pointer to a
local variable (character array in this case). If we return a pointer
to local variable then program may crash or we get incorrect result.
C programming code
#include <stdio.h> int main() { int n, c, k; printf("Enter an integer in decimal number system\n"); scanf("%d", &n); printf("%d in binary number system is:\n", n); for (c = 31; c >= 0; c--) { k = n >> c; if (k & 1) printf("1"); else printf("0"); } printf("\n"); return 0; }
Output of program:
Above code only prints binary of integer, but we may wish to perform operations on binary so in the code below we are storing the binary in a string. We create a function which returns a pointer to string which is the binary of the number passed as argument to the function.
C code to store decimal to binary conversion in a string
#include <stdio.h> #include <stdlib.h> char *decimal_to_binary(int); main() { int n, c, k; char *pointer; printf("Enter an integer in decimal number system\n"); scanf("%d",&n); pointer = decimal_to_binary(n); printf("Binary string of %d is: %s\n", n, t); free(pointer); return 0; } char *decimal_to_binary(int n) { int c, d, count; char *pointer; count = 0; pointer = (char*)malloc(32+1); if ( pointer == NULL ) exit(EXIT_FAILURE); for ( c = 31 ; c >= 0 ; c-- ) { d = n >> c; if ( d & 1 ) *(pointer+count) = 1 + '0'; else *(pointer+count) = 0 + '0'; count++; } *(pointer+count) = '\0'; return pointer; }
No comments:
Post a Comment