Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Shokerking
0 / 0 / 0
Регистрация: 10.12.2015
Сообщений: 5
1

Перевод из двоичной системы счисления в шестнадцатиричную, используя битовые операции

10.12.2015, 17:45. Просмотров 1118. Ответов 2
Метки нет (Все метки)

Формулировка задачи:
"Разработать программу, которая переводит число из двоичной системы счисления (из внутреннего представления) в шестнадцатеричную." (консольное приложение)
Помогите разобраться в задаче, имею общее представление о битовых операциях, но не понимаю:
  1. Как ввести двоичное число? (возможно вводить следует в int и обрабатывать уже далее)
  2. Что подразумевается под внутренним представлением числа?
  3. Как применить битовые операции к переводу чисел между системами счисления? (в данном случае из двоичной в шестнадцатеричную)

Буду бесконечно благодарен, если поможете написать

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2015, 17:45
Ответы с готовыми решениями:

Перевод чисел из двоичной системы счисления в систему счисления кратной степеням двойки и обратно
Нужно две программы, одна реализует перевод чисел из двоичной системы счисления...

Перевод из двоичной системы счисления в десятичную
#include <iostream> #include <cmath> #include <cstring> #include <stdio.h>...

Перевод из двоичной системы счисления в десятичную
Программа не работает для отрицательных чисел. Помогите найти ошибку. #include...

Перевод из двоичной системы счисления в десятичную
как создать код который переводит с двоичной системы в десятичную без...

Перевод из двоичной системы счисления в десятичную
Помогите пожалуйста перевести число из 2-ой сс в 10 сс. Буду очень благодарен:)

2
Kerry_Jr
Эксперт PHP
2211 / 2007 / 940
Регистрация: 14.05.2014
Сообщений: 5,869
Записей в блоге: 1
Завершенные тесты: 5
10.12.2015, 18:03 2
Лучший ответ Сообщение было отмечено Shokerking как решение

Решение

Цитата Сообщение от Shokerking Посмотреть сообщение
двоичной системы счисления (из внутреннего представления)
Видимо, вводится число не в двоичной системе, а в десятичной, раз уж сказано о внутреннем представлении.

Добавлено через 14 минут
Я как-то так это понимаю
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
int main()
{
    int bin, rest;
    std::cin >> bin;
    std::string hex = "";
    while (bin)
    {
        rest = bin & 0xF; // узнаем остаток от деления на 16
        bin >>= 4; // делим на шестнадцать
        if (rest >= 10)
            hex = static_cast<char>(rest % 10 + 'a') + hex;
        else
            hex = static_cast<char>(rest + '0') + hex;
    }
    
    std::cout << hex << std::endl;
    
    // задержка консольного окна
    std::cin.get();
    std::cin.get();
}
0
Геомеханик
792 / 597 / 939
Регистрация: 26.06.2015
Сообщений: 1,409
10.12.2015, 20:42 3
Накидал преобразование bin в hex из строки в строку.
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
#include <iostream>
 
//bin(2) -> hex(16)
char* bin_to_hex(const char* b, char* h){
    int m, n, i, j;
    const char*   p = b;
    char ch, *q, *t = h;
    
    while(*b && (*b == '0'))
        ++b;
 
    p = b;
    while(*p)
        ++p;
 
    if(p == b)
        *h++ = '0';
 
    n = (int)(p - b);
    for(i = n - 1; i > -1; i -= 4){
        n = i - 3;
        if(n <= -1)
            n = 0;
 
        for(m = 0, j = n; j <= i; ++j)
            m |= (int)(b[j] - '0') << (i - j);
 
        *h++ = (m < 10) ? (char)(m + '0') : (char)(m - 10 + 'A');
    }
    *h = '\0';
 
    if(h > t){
        for(--h, q = t; h > q; --h, ++q){
            ch = *q;
            *q = *h;
            *h = ch;
        }
    }
    return t;
}
 
int main(void){
    char s[32];
    std::cout << bin_to_hex("101", s) << std::endl;
    std::cout << bin_to_hex("1000111100001011", s) << std::endl;
    std::cout << bin_to_hex("1101101101111001111111101", s) << std::endl;
    std::cout << bin_to_hex("1111111100111100111111110100001011111111", s) << std::endl;
    return 0;
}
Пример работы кода
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.12.2015, 20:42

Перевод из двоичной системы счисления в десятичную
Я создал программу, но вот она выдает размерность введенного массива, вместо...

Перевод числа из двоичной системы счисления в десятичную
написать программу, которая переводит число из двоичной системы счисления в ...

Рекурсивный перевод из двоичной системы счисления в десятичную
Вот мой код: #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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