Форум программистов, компьютерный форум CyberForum.ru

Битовые операции с FLOAT - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.80
Selle
 Аватар для Selle
0 / 0 / 0
Регистрация: 13.05.2011
Сообщений: 15
27.05.2011, 23:23     Битовые операции с FLOAT #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <math.h>
using namespace std;
 
int main()
{
    int  var = 0; // хочу float!!!!
    cout << "Input number: ";
    cin >> var;
    cout << "Decimal: " << var;
    cout << endl;
    cout << "Binary: " << endl;
    int binarr[32];
 
   for (int i = 31; i >= 0; i--)
         {
            int bit = ((var >> i)&1);
            binarr[i] = bit;
            cout << binarr[i];
         }
 
   cout << endl;
    return 0;
}
~
~
Как для флоат сделать?!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2011, 23:23     Битовые операции с FLOAT
Посмотрите здесь:

C++ Битовые операции
Битовые операции, битовые поля. C++
Битовые операции C++
C++ Битовые операции
Битовые операции и операции смещения языка С C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
27.05.2011, 23:37     Битовые операции с FLOAT #2
Selle, Битовые операторы применимы только для целечислинных типов.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16844 / 5265 / 323
Регистрация: 30.03.2009
Сообщений: 14,161
Записей в блоге: 26
27.05.2011, 23:44     Битовые операции с FLOAT #3
Единственный способ распечатать биты плавающего представления - это побитно перегнать float в значение типа int и побитно распечатать. Например, можно сделать так:

C
1
2
float f = 123.45;
int var = *((int*)&f);
А дальше всё как у тебя, только вместо печати "Decimal" и var надо вставить "Float" и f

Такой способ (как и практически любой другой) подразумевает, что размер int'а совпадает с размером float'а.
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
28.05.2011, 00:43     Битовые операции с FLOAT #4
Можно обмануть компилятор:
C++
1
2
3
4
5
6
7
union Bits
{   float F;
     int I;
};
Bits A;
A.F = 1.0;
A.I = A.I & 0x80000000;
Не универсально, так как неявно использует одинаковые размеры float и int.
На 32-битном пентюхе - работает.
Можно еще так:
C++
1
2
3
4
union Bits
{   float F;
     char ch[sizeof(float)];
};
Yandex
Объявления
28.05.2011, 00:43     Битовые операции с FLOAT
Ответ Создать тему
Опции темы

Текущее время: 12:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru