Если вы хотите двоичные операции, ваши входные данные должны быть двоичными, а не десятичными или восьмеричными.
К сожалению, C и C ++ не поддерживают двоичные литералы. Некоторые компиляторы позволяют вам делать это с префиксом '0b', поэтому 110010 & 010101
будет написано 0b110010 & 0b010101
, но, очевидно, это не переносимо.
Один из вариантов - использовать std :: bitset , который позволяет вводить двоичное число в виде строки.
Однако, учитывая, что вы заметили, что это домашняя работа, я ожидаю, что std :: bitset не тот ответ, который вы должны предоставить, и он может просто использовать & и | обычно. Единственная причина, по которой вы видите проблему, заключается в том, что вы вводите двоичные числа в десятичном и восьмеричном формате - если вы вводите числа в одном формате и манипулируете ими, проблем не будет.