N
не является десятичным целым числом. Это число .
Если вы действительно хотите поговорить о специфике, она уже хранится в двоичном формате.
То, о чем вы говорите, это представление . Что такое представление числа при выводе на экран? IOStreams по умолчанию покажет вам цифры в десятичном виде.
Вы можете использовать Манипуляторы ввода / вывода, чтобы вместо этого выбрать шестнадцатеричный или восьмеричный. К сожалению, пока нет std::bin
, но мы можем использовать std::bitset
для той же цели:
#include <iostream>
#include <iomanip>
#include <bitset>
int main()
{
int x = 42;
std::cout << x << '\n';
std::cout << std::hex << x << '\n';
std::cout << std::oct << x << '\n';
std::cout << std::bitset<sizeof(x)>(x) << '\n';
}
// Output:
// 42
// 2a
// 52
// 1010
И весь ваш подход («подделать» сдвиг представления путем изменения вашего номера на другое число, которое выглядит как двоичное представление исходного числа при печати его в десятичном представлении & ndash; фу!), Устареет, решив Ваша проблема без усилий.