#include <stdio.h>
#include <stdlib.h>
void showBits(int s)
{
int status, i, j, k, result, sz, bitStatus;
int ibits[64]; // size of int in 64 bit OS is 64 bits = 8 bytes.
char *pchi, jbit, chi;
result = s;
sz = sizeof(result);
pchi = (char*)(&result);
for(i = 0; i < sz; i++)
{
jbit = 0x01;
chi = *pchi;
for(j = 0; j < 8; j++)
{
bitStatus = (chi & jbit);
chi = chi >> 1;
ibits[(i * 8) + j] = bitStatus;
}
pchi++;
}
for(k = 63; k >= 0; k--)
{
printf("%d", ibits[k]);
}
}
int main(int argc, char ** argv)
{
int i, status, result, num;
if( argc != 2)
{
printf("--Help \nshowBits int_value\n");
return 0;
}
num = atoi(argv[1]);
printf("\n");
showBits(num);
printf("\n");
// printf("\n");
// showBits(0);
//
// printf("\n");
// showBits(-1);
//
// printf("\n");
return 0;
}
/*
output :-
---------
[rahul@C-Client Debug]$ ./showBits 1
00000000000000000000000000000001
[rahul@C-Client Debug]$ ./showBits 0
00000000000000000000000000000000
[rahul@C-Client Debug]$ ./showBits -1
11111111111111111111111111111111
[rahul@C-Client Debug]$ ./showBits -2
11111111111111111111111111111110
[rahul@C-Client Debug]$
tip : negative numbers are stored in memory in two's complements.
so "-1" = all 1s : 11111111111111111111111111111111
*/
No comments:
Post a Comment