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

Перевод в двоичную систему счисления - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Дано натуральное число n. Вычислить http://www.cyberforum.ru/cpp-beginners/thread1015009.html
#include "stdafx.h" #include <stdio.h> #include <math.h> #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv) { setlocale(LC_ALL,"Rus"); int n; int i=1; float k, S=0;
C++ Найти все пары дружественных натуральных чисел из интервала от N 1 до N 2. Очень нужна помощь!) Помогите пожалуйста) в С++, visual studio учусь на первом курсе мех-мата: Найти все пары дружественных натуральных чисел из интервала от N 1 до N 2. Два числа называются дружественными, если каждое из них равно сумме делителей другого (само число в качестве делителя не рассматривается). http://www.cyberforum.ru/cpp-beginners/thread1014995.html
Разложение функций в ряды C++
Используя разложение функций в ряды, посчитайте их значения cos x=\sum_{k=0}^{\propto}(-1)k\frac{x2k}{(2k)!} --- Буду очень благодарен даже за мельчайшую помощь!
C++ и QuickBMS C++
Доброго времени суток, уважаемые форумчане. По просьбе друга выкладываю следующий вопрос. Может кто поможет? Существует скрипт на QuickBMS, нужно "перевести" его на С++. Я так понимаю это скрипт распаковки каких-то архивов. Вот собственно сам скрипт. Помогите кто сможет, пожалуйста. idstring "BFPK" get VERSION long get TABLESIZE long math TABLESIZE += 16 savepos TABLEOFFSET
C++ Неоднозначный вызов перегруженной функции http://www.cyberforum.ru/cpp-beginners/thread1014978.html
#include "stdafx.h" #include <cstdlib> #include <iostream> #include <math.h> #include <Windows.h> #include <iomanip> #include <conio.h> #include <fstream> using namespace std; struct table
C++ warning C4244: =: преобразование "double" в "float Объясните нубу пожалуйста, почему выкидывает это предупреждение ? warning C4244: =: преобразование "double" в "float", возможна потеря данных Как исправить ? MSVC++ 2010 float trArea (int fa, int fb){ float fS; fS = fa*fb/2.0; подробнее

Показать сообщение отдельно
Darthriddikc
10 / 10 / 0
Регистрация: 23.12.2012
Сообщений: 45
22.11.2013, 17:43     Перевод в двоичную систему счисления
Не знаю нужно вам это ещё? Просто я недавно практически такое же знакомому делал.

Для перевода из десятичной системы в двоичную нужно делить
десятичное число на 2 и записывать остатки от деления до тех пор, пока частное
от предыдущего деления не станет равно 0. Например, преобразуем 1410 в
двоичную систему:

14/2 = 7 остаток 0
7/2 = 3 остаток 1
3/2 = 1 остаток 1
1/2 = 0 остаток 1

Процесс деления завершён, так как последнее частное стало равно 0.
Теперь запишем все остатки подряд от последнего к первому, и мы получим
число в двоичной системе — 11102

Не по теме:

Вообще так десятичную систему можно перевести в любую систему исчисления, только надо делить на основание системы в которую надо перевести, например для того чтобы перевести из десятичной в шестнадцатеричную нужно делить на 16, в восьмеричную на 8 и т.д.


Данная программа переводит два десятичных 32-ух разрядных целых беззнаковых числа в двоичные и складывает их
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include <iostream>
using namespace std;
/* функция transferIn2 переводит десятичное число num_10, в двоичное num_2 (сохраняет результат в массив,
   который был передан как параметр указателя num_2) */
void transferIn2 (int num_10, bool* num_2)
{
    int i, j=0; // для циклов
    /* temp - для временного хранения разряда из правой половины, которое потом перейдёт в левую половину
       при преобрвзовании порядка по принципу от последнего к первому */
    bool temp;
    for(i=0; i<32; i++) //обнуляем все элементы (разряды)
        num_2[i]=0;
    i=0;
    while(1)
    {
        num_2[i]=num_10%2; // десятичное число делют по модулю на 2 (т.е. в num_2[i] записывается сам остаток от деления на 2)
        if(!(num_10/2)) // если деление без модуля (без остатка) на 2 стало равнятся 0, то...
        {
            while(1) // цикл, который поменяет порядок значений элементов в массиве по принципу от последнего к первому
            {
                temp=num_2[31-j]; // в temp сохраняется разряд из правой половины
                num_2[31-j]=num_2[j]; // в разряд из праой половины сохраняется соответствующий зеркальный разряд левой половины
                num_2[j]=temp; // в разряд левой половины сохраняется значение из temp (бывший разряд из правой половины)
                if (!i) // если i=0, то...
                    break; // цикл завершается
                j++; i--;
            }
            break; // цикл завершается
        }
        num_10/=2; // десятичное число делют без модуля (без остатка)
        i++;
    }
}
int main()
{
    unsigned int a_10, b_10;
    int i; // для циклов
    /* a_2, b_2 - массивы из 32 элементов (32 разряда), будут хранить двоичное представление a_10 и b_10 соответственно; 
       sum_2 - массивы из 32 элементов (32 разряда), будет хранить двоичную сумму;
       lo - займ (перенос) в соседний бит при переполнении разряда (если результат больше 1) при сложении */
    bool a_2[32], b_2[32], sum_2[32]={NULL}, lo=0;
    cin>>a_10>>b_10;
    transferIn2(a_10,a_2);
    transferIn2(b_10,b_2);
    cout<<endl<<a_10<<"d = ";
    for (i=0; i<32; i++)
        cout<<a_2[i];
    cout<<'b'<<endl<<endl;
    cout<<b_10<<"d  = ";
    for (i=0; i<32; i++)
        cout<<b_2[i];
    cout<<'b'<<endl<<endl;;
    for(i=31; i>=0; i--) // цикл для сложения двух двоичных чисел
    {
        if ((a_2[i]+b_2[i])>1) // если сумма разрядов больше 1, то...
        {
            if (lo) // если был осуществлён перенос (lo=1), то...
                sum_2[i]=1; // сумма двух разрядов равна 1
            else // напротив (если не было переноса (lo=0)), то...
            {
                sum_2[i]=0; // сумма двух разрядов равна 0
                lo=1; // был осуществлён перенос
            }
        }
        if ((a_2[i]+b_2[i])==1) // если сумма разрядов равна 1, то...
        {
            if (lo) // если был осуществлён перенос (lo=1), то...
                sum_2[i]=0; // сумма двух разрядов равна 0
            else // напротив (если не было переноса (lo=0)), то...
                sum_2[i]=1; // сумма двух разрядов равна 1
        }
        if (!(a_2[i]+b_2[i])) // если сумма разрядов равна 0, то...
        {
            if (lo) // если был осуществлён перенос (lo=1)), то...
            {
                sum_2[i]=1; // сумма двух разрядов равна 1
                lo=0; // сброс переноса
            }
            else // напротив (если не было переноса (lo=0)), то...
                sum_2[i]=0; // сумма двух разрядов равна 0
        }
    }
    cout<<"a_2+b_2=";
    for (i=0; i<32; i++)
        cout<<sum_2[i];
    cout<<'b'<<endl;
    return 0;
}
 
Текущее время: 03:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru