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.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