Russian Qt Forum

Программирование => С/C++ => Тема начата: trot от Ноябрь 11, 2011, 19:04



Название: представление чисел в двоичном виде
Отправлено: trot от Ноябрь 11, 2011, 19:04
Необходимо отобразить любое число (целое или с плавающей точкой) в виде нулей и единиц, т.е. в бинарном виде.
Например, число float f=3;
нужно вывести на экран в виде "0100000001000....".
Подскажите варианты решений. Спасибо.


Название: Re: представление чисел в двоичном виде
Отправлено: BuRn от Ноябрь 11, 2011, 20:06
ну а если банально перевести просто в двоичную систему счисления по правилам


Название: Re: представление чисел в двоичном виде
Отправлено: madRoger от Ноябрь 11, 2011, 22:34
Для перевода целых чисел подойдет QString::number с указанием системы исчисления.


Название: Re: представление чисел в двоичном виде
Отправлено: andrew.k от Ноябрь 11, 2011, 23:29
Для перевода целых чисел подойдет QString::number с указанием системы исчисления.
Подозреваю, что в качестве решения лабы это не прокатит)


Название: Re: представление чисел в двоичном виде
Отправлено: LisandreL от Ноябрь 12, 2011, 03:37
Подозреваю, что в качестве решения лабы это не прокатит)
Просто с приведением дробного числа к двоичному виду оно не справится.


Название: Re: представление чисел в двоичном виде
Отправлено: trot от Ноябрь 13, 2011, 21:58
QString::number только для целых, а плавающей точкой как перевести число в двоичный вид? Подскажите какие могут быть варианты. Спасибо


Название: Re: представление чисел в двоичном виде
Отправлено: MoPDoBoPoT от Ноябрь 13, 2011, 22:27
Воспользоваться union


Название: Re: представление чисел в двоичном виде
Отправлено: Igors от Ноябрь 13, 2011, 23:55
Код
C++ (Qt)
template <class T>
void PrintBin( const T & src )
{
 char dstBuf[65];
 char * buf = dstBuf + sizeof(dstBuf);
 *(--buf) = 0;
 
 size_t num = sizeof(T);
 long long val;
 switch (num) {
   case 1:
   case 2:
     val = src;
     break;
 
   case 4:
     val = *(int *) &src;
     break;
 
   case 8:
     val = *(long long *) &src;
     break;
 
   default:
    assert(0);  // invalid T
 }
 
 for (size_t i = 0; i < num * 8; ++i) {
  *(--buf) = (val & 1LL) ? '1' : '0';
  val >>= 1;
 }
 
 printf("binary: %s\n", buf);
}
 


Название: Re: представление чисел в двоичном виде
Отправлено: trot от Ноябрь 16, 2011, 18:13
Спасибо всем, особенно Igors