Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
С++ не имеет встроенных средств написания чисел в двоичном виде.
int myBinaryNumber = 0b0110110; уже отменили? Или я что-то неправильно помню?#include <iostream>
using namespace std;
int main()
{
int num = 0b0010010;
cout << num << endl;
return 0;
}
beaver@gentoo /home/beaver/1 $ g++ 1.cpp -o 1
beaver@gentoo /home/beaver/1 $ ./1
18
template<char...> OutputType operator "" _suffix();
OutputType some_variable = 1234_suffix; // operator "" _suffix<'1', '2', '3', '4'>()
template <int N>
int parse_binary(const char *s)
{
int ret = 0;
for (size_t i = 0; i < N; ++i) {
ret = (ret << 1) + (s[i] == '0'? 0 : 1);
}
return ret;
}
template <int N>
int parse_binary(const char (&s)[N])
{
return parse_binary<N-1>(static_cast<const char *>(s));
}
#define BIN(b) parse_binary(#b)
int main(int argc, char* argv[])
{
return BIN(11000000); // mov eax, 192
}
#define HASH(s) s[0]? ... : ...
... будут достаточно длинными :)
Формирование данных с помощью шаблонов С++