Mysterious και ngine13 συγγνώμη που θα σας την πώ..αλλά απαιτείται λύση αποκλειστικά με δυαδικούς τελεστές.Συνεπώς πίνακες,δυνάμεις του 2,αλλά και τελεστές πρόσθεσης είναι αχρειάστοι..Εναλλακτικά μπορείτε να χρησιμοποιήσετε ολίσθηση αντί για όλα τα προηγούμενα...
Επηρεασμένος από τα λόγια σου Bo@rD-RiDeR αφαίρεσα τον πίνακα και το "==" και το έκανα αποκλειστικά με δυαδικούς (εκτος απ'το i<8 στα loops), αλλά και πάλι δεν χρησιμοποιήσα ολίσθηση άλλα τις δυνάμεις του 2.Τι ακριβώς εννοείς <<με τις δυνάμεις του δύο>>, ποιος ο συλογισμό σου;
Εξηγούμαι για τις δυνάμεις του 2: (ΠΡΟΣΟΧΗ SPOILERS)
printf("Enter the value of gate C:\n");
unsigned char C;
scanf("%u",&C);
printf("\nPositions of C's bits with value of 1:\n");
for(i=0;i<8;i++){
if(C&square(7-i))
printf("%d\n",i+1);
}
Aφού οι δυνάμεις του 2 έχουν την ιδιότητα:
20 = 1 = 00000001
21 = 2 = 00000010
22 = 4 = 00000100
...
...
27 =128=10000000
*Όπου square συνάρτηση που υπολογίζει το 27-i