Форум программистов, компьютерный форум, киберфорум
Наши страницы

Как получить битики float - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ наследование классов в C++ http://www.cyberforum.ru/cpp-beginners/thread1087805.html
решил я с SDL поиграться.... ругается на 9 строчку компилятор, где ошибку допустил не подскажете?) main.cpp #include <iostream> #include "Game.h" // our Game object Game* g_game = 0; int...
C++ заполнение вектора по модулю Заполняет вектор по модулю 2: #include <iostream> #include <vector> #include <cstdlib> #include <ctime> int main() { srand(unsigned(std::time(0))); std::vector<int> vector(10); http://www.cyberforum.ru/cpp-beginners/thread1087801.html
как реализовать второй рабочий стол своей же системы в окне браузера? C++
Я профан, поэтому прошу профессионалов разъяснить, возможно ли такое написать. В общем проблема такая — в страницу браузера, сайта требуется автоматически эмулировать второй рабочий стол операционной...
Отладить функцию для сложения, вычитания, умножения и деления двух чисел C++
Не могу найти ошибок,программа не правильно работает. Вот условие : Напишите программу, которая использукет 4 функции. Каждая функция используется для сложения, вычитания, умножения и деления двух...
C++ Расставить арифметические знаки в выражении http://www.cyberforum.ru/cpp-beginners/thread1087785.html
Здравствуйте, хочу представить вашему внимаю одну задачу из олимпиадной работы. У меня самого котелок еще не доварил как её решить, поэтому хочу предоставить эту возможность вам!) Не уделяйте...
C++ Предупреждение 2 warning LNK4075: не учитывается "/INCREMENTAL" Предупреждение 1 warning C4996: 'swprintf': swprintf has been changed to conform with the ISO C standard, adding an extra character count parameter. To use traditional Microsoft swprintf, set... подробнее

Показать сообщение отдельно
Klafe
1 / 1 / 0
Регистрация: 13.10.2012
Сообщений: 101
03.02.2014, 07:18  [ТС]
Короче, покумекал, покумекал и решил, что проще будет сделать так:

Для перевода необходимо:

Для перевода дробной части числа последовательно умножаем дробную часть на основание 2. В результате каждый раз записываем целую часть произведения.
0.72*2 = 1.44 (целая часть 1)
0.44*2 = 0.88 (целая часть 0)
0.88*2 = 1.76 (целая часть 1)
0.76*2 = 1.52 (целая часть 1)
Получаем число в 2-ой системе счисления: 1011
0.72 = 1011


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
27
28
29
int _tmain(int argc, _TCHAR* argv[]) {
    vector<bool>code;
    double x = 0.72;
 
    for (int i = 0; i < 4; i++) {
        if (i == 0) {
            x = x * 2;
 
        }
 
        if ((int) x == 0) {
            code.push_back(0);
            x = x * 2;
        }
 
        if ((int) x == 1) {
            x = (x - 1) * 2;
            code.push_back(1);
        }
 
    }
    for (int i = 0; i < 4; i++) {
        cout << code[i];
    }
 
    cin.get();
    cin.get();
    return 0;
}
Получается то, что нужно - 1011

Бинго!
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.