A Program to View the Binary Representation of Integers
Don't panic - this program uses C features not explained in lectures yet.
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
void
print_byte(uint8_t *address) {
int i;
for (i = 7; i >= 0; i--)
if (*address & (1 << i))
printf("1");
else
printf("0");
}
void
print_bytes(uint8_t *address, int n, int big_endian) {
int i;
if (big_endian)
for (i = 0; i < n; i++)
print_byte(address + i);
else
for (i = n - 1; i >= 0; i--)
print_byte(address + i);
printf("\n");
}
int
main(int argc, char *argv[]) {
if (argc < 2)
return 1;
long long ll = atoll(argv[1]);
long l = ll;
int i = ll;
short s = ll;
char c = l;
printf("Bit pattern for %lld in these types:\n", ll);
printf("%-10s", "char:");
print_bytes((uint8_t *)&c, sizeof c, 0);
printf("%-10s", "short:");
print_bytes((uint8_t *)&s, sizeof s, 0);
printf("%-10s", "int:");
print_bytes((uint8_t *)&i, sizeof i, 0);
printf("%-10s", "long:");
print_bytes((uint8_t *)&l, sizeof l, 0);
printf("%-10s", "long long:");
print_bytes((uint8_t *)&ll, sizeof ll, 0);
return 0;
}
Index