0 / 0 / 0
Регистрация: 17.09.2018
Сообщений: 21
1

Представление заданных типов данных в двоичном виде и перевод из двоичного представления

24.10.2018, 19:32. Показов 1845. Ответов 13

При выполнении лабораторной работы в университете обнаружил пробел в понимании типа unsigned char, то,как им пользоваться(в частности в данной работе).

Задача в том,чтобы написать две функции взаимодействующих с типами usigned short,double и запись, таким образом:
1)Функция void BinIn(unsigned char* buff_ptr, int sizebuff) вводит значение переменной выводит на экран монитора значение пе-ременной по ее двоичному представлению, адрес которого передан параметром buff_ptr, размер этой переменной в байтах передается параметром sizebuff.
2)Функция void BinOut(unsigned char* buff_ptr, int sizebuff) выводит на экран монитора двоичное представление переменной, адрес которой передан параметром buff_ptr, размер этой переменной в байтах передается параметром sizebuff.

Я осилил только подобные алгоритмы:

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
#include <iostream>
 
using namespace std;
 
 
void BinOut(unsigned short*, int);
void BinIn(unsigned short*, int);
 
int main()
{
    setlocale(LC_ALL, "ru");
 
    unsigned short x = 368;
    BinOut((unsigned short *)&x, sizeof(x));
 
    unsigned short y;
    cout << " \n Введите двоичное представление числа: ";
    cin>>y;
    BinIn((unsigned short *)&y, sizeof(y));
 
    system("pause");
 
    return 0;
}
 
 
void BinOut(unsigned short* buff_ptr, int sizebuff)//Функция представления десятичного числа в двоичном виде.
{
    cout << "Десятичное представление: " << *buff_ptr << endl;
    int i = 0;
    unsigned short arr[100];
 
    for (i = 0; *buff_ptr != 0; i++)
    {
 
        arr[i] = *buff_ptr % 2;
        *buff_ptr /= 2;
        *buff_ptr = *buff_ptr;
    }
 
    cout << "Двоичное представление: ";
    for (i = 8; i > -1; i--)
    {
        cout << " " << arr[i];
    }
 
 
}
 
void BinIn(unsigned short* buff_ptr, int sizebuff)//Функция представления двоичного числа в десятичном виде.
{
    unsigned short a, b = 0, result = 0;
    while (*buff_ptr != 0)
    {
        a = *buff_ptr % 10;
        *buff_ptr = *buff_ptr / 10;
        if (b == 0)
            b = 1;
        if (b != 0)
            a *= b;
        result += a;
        b *= 2;
    }
 
    cout <<"Десятичное представление числа: "<< result << endl;
}

Только как я понял,вместо моего unsigned short в функцию должен передаваться unsigned char, но до меня не доходит,как с ним работать и как он работает в принципе(в гугле не забанили,просто по моей теме так и не нашёл ничего).

Так же видел,что для перевода можно использовать работу с битами,но смутно представляю,как это делается.

В общем,прошу помочь чайнику, уважаемые программисты. Можете покидать хороших статей на тему или объяснить прямо здесь. Заранее спасибо!
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.10.2018, 19:32
Ответы с готовыми решениями:

Представление чисел в виде 0x. Размеры типов данных
Господа, никто не знает, почему 0хFFFFFFFF в машинном представлении = -1, а не 2147483648? Тип...

Длинная арифметика, представления чисел в двоичном виде
Хочу реализовать алгоритм суммирования в двоичной системе. Использовать битовое представления числа...

Чтение файла, представление его в двоичном виде
Здравствуйте, подскажите пожалуйста .Я представлял картинку в двоичном виде , делал шифрование LSFR...

Как работает представление отрицательных чисел в двоичном виде?
Написано, что числа в компьютере представлены двоичным кодом 1 это 1, 3 это 11, 57 это 111001. ...

13
Продавец времени
6974 / 3877 / 892
Регистрация: 12.03.2015
Сообщений: 18,374
24.10.2018, 19:37 2
Ты чот намешал в кучу всё. Объясни по-русски, нормальными словами, чо те надо.
0
0 / 0 / 0
Регистрация: 17.09.2018
Сообщений: 21
24.10.2018, 20:30  [ТС] 3
Вместо unsigned short в функции должен предаваться unsigned char, но переводить он должен unsugned short,double и тип запись
0
Продавец времени
6974 / 3877 / 892
Регистрация: 12.03.2015
Сообщений: 18,374
24.10.2018, 21:16 4
Цитата Сообщение от Fraidzilla Посмотреть сообщение
Вместо unsigned short в функции должен предаваться unsigned char, но переводить он должен unsugned short,double и тип запись
Ничо не понял. Зачем весь этот БДСМ?
0
0 / 0 / 0
Регистрация: 17.09.2018
Сообщений: 21
24.10.2018, 21:34  [ТС] 5
Потому что это моё задание в универе.

Вот само задание:

Разработать и отладить программу, выдающую двоичное представление значений unsigned short,double,'запись'.В программе использовать функции BinOut и BinIn.
1)Функция void BinIn(unsigned char* buff_ptr, int sizebuff) вводит значение переменной выводит на экран монитора значение пе-ременной по ее двоичному представлению, адрес которого передан параметром buff_ptr, размер этой переменной в байтах передается параметром sizebuff.
2)Функция void BinOut(unsigned char* buff_ptr, int sizebuff) выводит на экран монитора двоичное представление переменной, адрес которой передан параметром buff_ptr, размер этой переменной в байтах передается параметром sizebuff.
0
Продавец времени
6974 / 3877 / 892
Регистрация: 12.03.2015
Сообщений: 18,374
24.10.2018, 21:36 6
Примеры "вход" ---------> "выход" где?
0
0 / 0 / 0
Регистрация: 17.09.2018
Сообщений: 21
24.10.2018, 21:40  [ТС] 7
void BinOut
Входные параметры:
unsigned char* buff_ptr, . int sizebuff.
Выходные параметры: нет.


void BinIn
Входные параметры:
unsigned char* buff_ptr, . int sizebuff.
Выходные параметры: нет.
0
Don't worry, be happy
17615 / 10415 / 2013
Регистрация: 27.09.2012
Сообщений: 26,243
Записей в блоге: 1
24.10.2018, 21:41 8
Во концерт

0
0 / 0 / 0
Регистрация: 17.09.2018
Сообщений: 21
24.10.2018, 21:43  [ТС] 9
Не то слово...
0
Продавец времени
6974 / 3877 / 892
Регистрация: 12.03.2015
Сообщений: 18,374
24.10.2018, 21:44 10
Цитата Сообщение от Fraidzilla Посмотреть сообщение
void BinOut
Входные параметры:
unsigned char* buff_ptr, . int sizebuff.
Выходные параметры: нет.
void BinIn
Входные параметры:
unsigned char* buff_ptr, . int sizebuff.
Выходные параметры: нет.
Ты не в курсе, что означает слово "примеры"?!!!11
0
Don't worry, be happy
17615 / 10415 / 2013
Регистрация: 27.09.2012
Сообщений: 26,243
Записей в блоге: 1
24.10.2018, 21:54 11
Цитата Сообщение от Fraidzilla Посмотреть сообщение
Не то слово...
Понимаешь, формулировка действий BinIn выглядит примерно вводит чтобы вчера было котлеты ел.
0
0 / 0 / 0
Регистрация: 17.09.2018
Сообщений: 21
24.10.2018, 21:59  [ТС] 12
Если бы у меня были примеры,то я бы и сам смог разобраться.
0
Don't worry, be happy
17615 / 10415 / 2013
Регистрация: 27.09.2012
Сообщений: 26,243
Записей в блоге: 1
24.10.2018, 22:00 13
Fraidzilla, подойди к преподавателю, поинтересуйся.
0
Don't worry, be happy
17615 / 10415 / 2013
Регистрация: 27.09.2012
Сообщений: 26,243
Записей в блоге: 1
24.10.2018, 22:05 14
Представление заданных типов данных в двоичном виде и перевод из двоичного представления
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.10.2018, 22:05
Помогаю со студенческими работами здесь

Выведите его представление в двоичном виде в обратном порядке.
Помогите пожалуйста.... Дано натуральное число N. Выведите его представление в двоичном виде в...

Представление двоичного числа в десятичном виде
Двоичное число вводится с клавиатуры. Есть ли способ перевода с помощью битовых операций,если да,то...

Выведите представление заданного числа в двоичном виде в обратном порядке.
Дано натуральное число N. Выведите его представление в двоичном виде в обратном порядке. Входные...

Выведите представление натурального числа в двоичном виде в обратном порядке
Дано натуральное число N. Выведите его представление в двоичном виде в обратном порядке


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru