Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Create swapdoublebytes.c
  • Loading branch information
doa14001 committed Mar 26, 2019
1 parent 30aa7bd commit 7103f28
Showing 1 changed file with 48 additions and 0 deletions.
48 changes: 48 additions & 0 deletions swapdoublebytes.c
@@ -0,0 +1,48 @@
#include <stdio.h>

/*
* Print the bits in n in four formats:
*
* hexadecimal
* decimal with bits interpreted as signed int.
* decimal with bits interpreted as unsigned int.
* binary
*/
void print_bits(int n)
{
// print the integer in different format
printf("hex:%08X signed:%d unsigned:%u bits:", n, n, n);

// a loop to print bits from most significant to least significant
// also an example of sizeof use
for (int i = sizeof(int) * 8 - 1; i >= 0; i --)
printf("%d", (n >> i) & 1);
printf("\n");
}

int main()
{
int n;

// Repeatedly read an integer 'n' from standard input and
// swap left and right double bytes into 'n1' if successful.
// To exit, press Ctrl-D or Ctr-C
while (scanf("%d", &n) == 1) {

int n1 = 0;
int firsthalf = (n &0xFFFF0000) >> 16;
int secondhalf = (n &0x0000FFFF) << 16;

n1 = (firsthalf|secondhalf);

// Your code to swap left and right double bytes in n and
// save the changed value in n1.
// call function to print the bits in n and n1

print_bits(n);
print_bits(n1);
}

/* Let the OS know everything is just peachy. */
return 0;
}

0 comments on commit 7103f28

Please sign in to comment.