int num; cin >> num;
vector <int> binary;
while (num >= 1) {
if (num % 2 == 0) {
binary.push_back(0);
}
else if (num % 2 != 0) {
binary.push_back(1);
}
else if (num == 1) {
binary.push_back(num);
}
num /= 2;
}
for (int i = binary.size()-1; i > 0; i--) {
cout << binary[i];
}
Подскажите пожалуйста, почему первый ноль или единица всегда теряются? Например, 123 - 1111100, а у меня 111110
Почему в последнем цикле i > 0, а не i >= 0?
Я даже скопировал этот код в gdb online, всё нормально работает с >= 0
Кстати, 123 в двоичное это 1111011, а не то что вы написали. Это показывает и ваша программа, и онлайн конвертор
Как бы у тебя две первые ветки if покрывают всё возможные варианты и исключают срабатывание третей ветки
Обсуждают сегодня