OK, I know that I am not supposed to just blatantly ask questions for homework, but I can't seem to figure this out... Here is what I was told to do:Code:`#include <stdio.h>`

int display_binary(unsigned short number);

int main()

{

unsigned short number;

printf("Enter a whole number between 0 and 65,535: ");

scanf("%hu", &number);

printf("\n\n Decimal: %hu\n", number);

printf("Hexadecimal: %x\n", number);

display_binary(number);

getch();

return 0;

}

int display_binary(unsigned short number)

{

unsigned short mask = 0x8000;

int c, k;

for(c = 0; c < 16; c++)

{

k = (number & mask);

if(k == 0)

printf("0");

else

printf("1");

mask >> 1;

if(c == 3 || c == 7 || c == 11)

printf(" ");

}

}

My problem is, that I am getting the binary to be all "1's" for everything I put in. I think I am doing what is instructed, but obviously not.Quote:

Hint: Declare an unsigned short mask = 0x8000 (which is 1000 0000 0000 0000). Write a for loop that iterates 16 times. In each cycle, do a bitwise & between the mask and the input parameter. Display 0 if the outcome is 0 and 1 otherwise. Shift the mask to the right one bit at the end of each cycle to retrieve the next bit in the next cycle. Display a space character after every 4 bits of data to improve readability.

Thanks in advance for any help,

~Alan