#include #include #define ARRAY_SIZE 16 #include int compare_as_bool() { short array1[ARRAY_SIZE] = {0,1, -2, 3, -4, 5, -6, 7, -8, 9, -10, 11, -12, 13, -14, 15}; short array2[ARRAY_SIZE] = {0,1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; bool flag1[ARRAY_SIZE]; bool flag2[ARRAY_SIZE]; // Initialize flag arrays for (int i = 0; i < ARRAY_SIZE; i++) { flag1[i] = (array1[i] >= 0) ? true : false; flag2[i] = (array2[i] >= 0) ? true : false; } // Print flags // printf("flag1 = "); for (int i = ARRAY_SIZE-1; i >=0; i--) { printf("%d,",flag1[i]); } printf("\nflag2 = "); for (int i = ARRAY_SIZE-1; i >= 0; i--) { printf("%d,",flag2[i]); } printf("\nBoth = "); // Check if the ith element in both arrays is positive for (int i = ARRAY_SIZE-1; i >= 0; i--) { if (flag1[i] && flag2[i]) printf("1,"); else printf("0,"); } return 0; } void compare_as_bit() { short array1[ARRAY_SIZE] = {0,1, -2, 3, -4, 5, -6, 7, -8, 9, -10, 11, -12, 13, -14, 15}; short array2[ARRAY_SIZE] = {0,1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; uint16_t flag1 = 0; uint16_t flag2 = 0; // Initialize flag variables for (int i = 0; i < ARRAY_SIZE; i++) { if (array1[i] >= 0) { flag1 |= (1 << i); } if (array2[i] >= 0) { flag2 |= (1 << i); } } // Print flags as binary printf("\nflag1 = 0x%x, flag2 = 0x%x\n", flag1, flag2); // Use bitwise and operator to check if the ith element in both arrays is positive uint16_t both_positive = flag1 & flag2; printf("Both positive = 0x%x", flag1 & flag2); // print both positibe bit by bit // for (int i = 0; i < ARRAY_SIZE; i++) { // if (both_positive & (1 << i)) { // printf("1,"); // } else { // printf("0,"); // } // } } int main() { compare_as_bool(); compare_as_bit(); return 0; }