#cpp
Как перевести десятичное число в двоичное и наоборот? Язык C++.
Ответы
Ответ 1
Стандартный способ - использование std::bitset. int i = 5; std::bitset<16> bitset = i; // 'to_string' вернет строку std::string формата '000...0111' std::cout << "Binary : " << bitset.to_string, std::allocator >() << std::endl; Обратный способ тоже очевиден: std::bitset<16> bitset("101011"); Ответ 2
Последовательно записываете остатки от деления на два, потом переворачиваете получившуюся строку. 13/2 = 6; 1 6/2 = 3; 0 3/2 = 1; 1 1/2 = 0; 1 Ответ: 1101. Удобнее всего это делать в цикле while. Обратно - не сложнее. В цикле for на каждой итерации к ответу прибавляете 2^i (два в степени итератора), если число порядков равно 1 или ничего не прибавляете, если число порядков равно 0. Начинать надо с конца: 1101: i=0: 1 => 2^0 = 1; SUM = 1; i=1: 0 => SUM = 1+0 = 1; i=2: 1 => 2^2 = 4; SUM = 1+4 = 5; i=3: 1 => 2^3 = 8; SUM = 5+8 = 13;Ответ 3
void setBinNumber(int Number){ char tmp; //0 or 1 for next adding to string binNumber_ string binNumber_; //string to return while(Number){ tmp = '0' + Number % 2; //cout<<"tmp="<Ответ 4
из двоичного в десятичное #includeusing namespace std; int main() { int number = 0; char binary[80]; int mult = 1; cin >> binary; for(int i = strlen(binary); i; i--, mult *= 2) { if(binary[i-1] == '1') number += mult; else if(binary[i-1] != '0') { cout << "error" << endl; exit(1); } } cout << number << endl; return 0; } наоборот напишите сами )) Ответ 5
void dec2bin(void) { int count, cnt = 0; long int inp_numb; long unsigned int res; cout << " Enter Dec number: "; cin >> inp_numb; cout << endl; for(count = 63;count >= 0; count--) { res = (long unsigned int)(inp_numb >> count) & 1; printf("%llu", res); cnt+=1; if(cnt == 4) { printf(" "); cnt = 0; } } }
Комментариев нет:
Отправить комментарий