G
grid
Hi,
I have written a couple of programs which just prints the bits in
both directions.Would appreciate any help to refine them a bit.
1.
#include<stdio.h>
#include<limits.h>
void printbits_reverse(unsigned char a){
int i;
for(i=0 ; i < CHAR_BIT ; i++)
((0x1<<i) & a) ? printf("1") : printf("0"); }
int main()
{
unsigned char a = 0x96;
printbits_reverse(a);
return 0;
}
Now here the loop dosent look the best of code.How can I refine it to
better and generic code ?
2.
#include<stdio.h>
struct twid{
unsigned :24; /* skip bits 31 -> 8 for big-endian machines */
unsigned bit1:1;
unsigned bit2:1;
unsigned bit3:1;
unsigned bit4:1;
unsigned bit5:1;
unsigned bit6:1;
unsigned bit7:1;
unsigned bit8:1;
};
void print(struct twid *tw)
{
tw->bit1?printf("1")
rintf("0");
tw->bit2?printf("1")
rintf("0");
tw->bit3?printf("1")
rintf("0");
tw->bit4?printf("1")
rintf("0");
tw->bit5?printf("1")
rintf("0");
tw->bit6?printf("1")
rintf("0");
tw->bit7?printf("1")
rintf("0");
tw->bit8?printf("1")
rintf("0");
printf("\n");
}
int main()
{
unsigned val = 0x96;
struct twid *tw = (struct twid *) &val ;
print(tw);
return 0;
}
This is not a generic code ( a bit platform specific), but that long
list of printf's in the print function isnt again a very decent way.Can
I use a loop or any construct to print the values ?
TIA,
I have written a couple of programs which just prints the bits in
both directions.Would appreciate any help to refine them a bit.
1.
#include<stdio.h>
#include<limits.h>
void printbits_reverse(unsigned char a){
int i;
for(i=0 ; i < CHAR_BIT ; i++)
((0x1<<i) & a) ? printf("1") : printf("0"); }
int main()
{
unsigned char a = 0x96;
printbits_reverse(a);
return 0;
}
Now here the loop dosent look the best of code.How can I refine it to
better and generic code ?
2.
#include<stdio.h>
struct twid{
unsigned :24; /* skip bits 31 -> 8 for big-endian machines */
unsigned bit1:1;
unsigned bit2:1;
unsigned bit3:1;
unsigned bit4:1;
unsigned bit5:1;
unsigned bit6:1;
unsigned bit7:1;
unsigned bit8:1;
};
void print(struct twid *tw)
{
tw->bit1?printf("1")
tw->bit2?printf("1")
tw->bit3?printf("1")
tw->bit4?printf("1")
tw->bit5?printf("1")
tw->bit6?printf("1")
tw->bit7?printf("1")
tw->bit8?printf("1")
printf("\n");
}
int main()
{
unsigned val = 0x96;
struct twid *tw = (struct twid *) &val ;
print(tw);
return 0;
}
This is not a generic code ( a bit platform specific), but that long
list of printf's in the print function isnt again a very decent way.Can
I use a loop or any construct to print the values ?
TIA,