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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.80
Selle
 Аватар для Selle
0 / 0 / 0
Регистрация: 13.05.2011
Сообщений: 15
#1

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

27.05.2011, 23:23. Просмотров 1993. Ответов 3
Метки нет (Все метки)

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++ Битовые операции.
Битовые операции C++
Битовые операции C++
Битовые операции и операции смещения языка С C++
Битовые операции C++
C++ Битовые операции
C++ Битовые операции
Битовые операции C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2842 / 1779 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
27.05.2011, 23:37     Битовые операции с FLOAT #2
Selle, Битовые операторы применимы только для целечислинных типов.
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
17188 / 5442 / 337
Регистрация: 30.03.2009
Сообщений: 14,758
Записей в блоге: 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
Эксперт С++
1017 / 796 / 48
Регистрация: 30.04.2011
Сообщений: 1,617
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
Ответ Создать тему
Опции темы

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