Меня попросили написать код для преобразования десятичного числа в его двоичную форму. Я пробовал несколько разных способов, но не дает мне нужный мне заказ. Итак, я в настоящее время застрял в том, как действовать дальше.
Я попытался найти обычное двоичное сравнение, но оно дает мне неправильный порядок, скажем, правильный порядок 1001100, я просто получаю 0011001. и у меня нет возможности изменить порядок. Мне не разрешено использовать любую другую библиотеку, кроме iostream, cmath и string. Сейчас я пытаюсь просто найти преобразование, используя показатель степени 2 ^ показатель степени.
Это то, что у меня есть на данный момент:
int num, exp,rem;
string biNum;
cout<<"Enter decimal number: "<<endl;
cin>>num;
for (exp = 0; pow(2, exp) < num; exp++) {
}
while (num > 0) {
rem = num % (int) pow(2, exp);
if (rem != 0) {
biNum = biNum + '1';
} else {
biNum = biNum + '0';
}
exp--;
}
cout<<biNum;
return 0;
}
В настоящее время я не получаю никакого результата.
pow(2, X)
, так как у него много накладных расходов. Вместо этого используйте сдвиг влево:(1 << X)
. Многие процессоры могут реализовать сдвиг влево за одну или две инструкции. - person Thomas Matthews   schedule 07.08.2019'%'
. Опять же, операция И — это обычно 1 инструкция или еще пара (для загрузки регистров значениями). - person Thomas Matthews   schedule 07.08.2019pow()
, который представляет собой дорогостоящее вычисление с плавающей запятой, не имеющее смысла, которое используется для выполнения простых целочисленных вычислений, которые легко выполняются с использованием примитивов со сдвигом битов. Не говоря уже о том, что математика с плавающей точкой не работает. Я могу в значительной степени гарантировать вам, что тот, кто попросил вас написать это, отвергнет такое решение. В вашей книге по C++ будет больше информации о различных видах операций побитового сдвига, которые возможны в C++. - person Sam Varshavchik   schedule 07.08.2019cin >> num;
. С этого момента число является двоичным, и это подтверждается отсутствием операций деления и остатка с константой 10. То, что вы действительно делаете, — это преобразование из двоичного в зональное двоичное. - person user207421   schedule 07.08.2019