#include <stdio.h> #include <stdlib.h> #define BITMASK 0x3FF // 0b1111111111 in binary represents the last 10 bits char* last10BitsToString(unsigned short num) { // Apply bitmask to get the last 10 bits unsigned short last10Bits = num & BITMASK; // Allocate memory for the string representation char* str = (char*)malloc(11 * sizeof(char)); // 10 bits + '�' if (str == NULL) { printf("Memory allocation failed.n"); exit(1); } // Convert the last 10 bits to string int i; for (i = 0; i < 10; i++) { str[9 - i] = (last10Bits & (1 << i)) ? '1' : '0'; } str[10] = '�'; // Null-terminate the string return str; } int main() { unsigned short num = 12345; // Example unsigned short char* str = last10BitsToString(num); printf("Last 10 bits of %u in binary: %sn", num, str); free(str); // Don't forget to free the allocated memory return 0; }