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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
grom
1 / 1 / 0
Регистрация: 09.02.2009
Сообщений: 31
#1

Представление целых чисел массивом байтов - C++

29.07.2009, 17:49. Просмотров 1670. Ответов 10
Метки нет (Все метки)

у меня вот такая задачка:Написать процедуры сложения и вычитания двух целых чисел, каждое из которых представлено массивом байтов. Первый байт массива содержит код знака числа: 0 - ‘+’, 225 - ‘-‘, а остальные байты- значащие двоичные цифры числа. подскажите пожалуйста как представить число массивом байтов?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.07.2009, 17:49     Представление целых чисел массивом байтов
Посмотрите здесь:

C++ Дан файл целых чисел. Создать новый файл целых чисел, содержащий длины всех серий исходного файла.
C++ Написать шаблоны функций для для вычисления суммы произведений двух соседних чисел для трех целых чисел и в одномерном массиве целых чисел
Представление целых и вещественных чисел. Основные арифметические и логические операции. C++
Дан файл целых чисел. Создать новый файл целых чисел, содержащий длины всех серий исходного файла C++
C++ Написать функции для выполнения операций над одномерным массивом целых чисел
C++ Сумма всех целых чисел от целых чисел от A до B включительно
Условные операторы при работе с массивом целых чисел C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
odip
Эксперт С++
7153 / 3293 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
29.07.2009, 17:57     Представление целых чисел массивом байтов #2
У тебя задача стоит - сложить и вычесть. Задачи переводить число в массив или массив в число у тебя не стоит
Поэтому - на вход два массива, а на выходе третий массив с результатом.
Только не 225, а 255.

Добавлено через 41 секунду
Еще неплохо размер массива определить константой, чтобы какая-то определенность была.
M128K145
Эксперт C++
8280 / 3499 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
29.07.2009, 18:04     Представление целых чисел массивом байтов #3
Цитата Сообщение от grom Посмотреть сообщение
у меня вот такая задачка:Написать процедуры сложения и вычитания двух целых чисел, каждое из которых представлено массивом байтов. Первый байт массива содержит код знака числа: 0 - ‘+’, 225 - ‘-‘, а остальные байты- значащие двоичные цифры числа. подскажите пожалуйста как представить число массивом байтов?
Если я правильно понял(тогда я немного исправлю), то нужно написать операции для +/- для целых чисел представленных массивом бит, а не байт. Самый старший бит(т.е. самый левый) - это знаковый бит 0(+) и 1(а не 255) который означает -. Битовую математику знаеш(сложение и вычитание двоичных кодов)?
grom
1 / 1 / 0
Регистрация: 09.02.2009
Сообщений: 31
29.07.2009, 18:16  [ТС]     Представление целых чисел массивом байтов #4
Цитата Сообщение от M128K145 Посмотреть сообщение
Если я правильно понял(тогда я немного исправлю), то нужно написать операции для +/- для целых чисел представленных массивом бит, а не байт. Самый старший бит(т.е. самый левый) - это знаковый бит 0(+) и 1(а не 255) который означает -. Битовую математику знаеш(сложение и вычитание двоичных кодов)?
да вот я тоже думаю что так то понятнее , но я написал задание как оно мне

поставлено в методичке надо будет с преподом обсудить
odip
Эксперт С++
7153 / 3293 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
29.07.2009, 20:02     Представление целых чисел массивом байтов #5
C
1
2
#define MAX_BVAL_BYTES 16
unsigned char bval[MAX_BVAL_BYTES];
bval[i] принимает значения от 0 до 255.

Это массив байт или бит ?
Думаю что нужно складывать и вычитать именно такие числа.
M128K145
Эксперт C++
8280 / 3499 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
29.07.2009, 21:11     Представление целых чисел массивом байтов #6
В общем попытаюсь сегодня сделать, если время будет...
odip
Эксперт С++
7153 / 3293 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
29.07.2009, 21:29     Представление целых чисел массивом байтов #7
А чего там думать - сложение тривиально:
C
1
2
3
4
5
6
7
8
9
10
11
12
#define MAX_BVAL_BYTES 16
 
unsigned char bv0[MAX_BVAL_BYTES], bv1[MAX_BVAL_BYTES], bv2[MAX_BVAL_BYTES];
unsigned char flag;
unsigned int sum;
int i;
 
flag= 0;
for ( i= 0; i<MAX_BVAL_BYTES; i++ ) {
    sum= bv0[i]+bv1[i]+flag;
    bv2[i]= sum&0xFF; flag= (sum>=256) ? 1 : 0;
}
Добавлено через 6 минут 27 секунд
Смена знака тривиально - это инвертирование всех бит, а потом прибавить 1.
C
1
2
3
4
5
6
7
8
9
10
11
12
#define MAX_BVAL_BYTES 16
 
unsigned char bv0[MAX_BVAL_BYTES], bv2[MAX_BVAL_BYTES];
unsigned char flag;
unsigned int sum;
int i;
 
flag= 1;
for ( i= 0; i<MAX_BVAL_BYTES; i++ ) {
    sum= (bv0[i]^0xFF)+flag;
    bv2[i]= sum&0xFF; flag= (sum>=256) ? 1 : 0;
}
Добавлено через 1 минуту 25 секунд
Вычитание разложим так: A-B = A+(-B).
Операцию сложения мы умеем делать.
Операцию смены знака мы тоже умеем делать.
Значит можем сделать и вычитание.
M128K145
Эксперт C++
8280 / 3499 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
29.07.2009, 21:48     Представление целых чисел массивом байтов #8
odip, тогда не буду даже пробовать . Я просто паралельно другим делом занят)))
odip
Эксперт С++
7153 / 3293 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
29.07.2009, 23:01     Представление целых чисел массивом байтов #9
Хотя вычитание можно сделать напрямую.
Нужно только вместо однобитного флага переноса сделать однобитный флаг заема.
grom
1 / 1 / 0
Регистрация: 09.02.2009
Сообщений: 31
29.07.2009, 23:26  [ТС]     Представление целых чисел массивом байтов #10
Спасибо большое за помощь! только мне не совсем понятно вот это
#define MAX_BVAL_BYTES 16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2009, 23:39     Представление целых чисел массивом байтов
Еще ссылки по теме:

C++ Написать программу, которая вычисляет сумму первых n целых положительных целых чисел
Задан массив K(m) попарно различных целых чисел. Получить все перестановки целых чисел C++
Создать класс для работы с двумерным массивом целых чисел C++
Даны два целых числа А и В (А<В). Найти сумму квадратов всех целых чисел от А до В включительно C++
C++ Даны два целых числа A и B (A < B). Найти сумму всех целых чисел от A до B включительно

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

Или воспользуйтесь поиском по форуму:
M128K145
Эксперт C++
8280 / 3499 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
29.07.2009, 23:39     Представление целых чисел массивом байтов #11
grom, подстановка, по типу
C++
1
const int MAX_BVAL_BYTES = 16;
т.е. везде вместо MAX_BVAL_BYTES будет подставлятся это значение(тип определяется компилятором).
По этому вопросу посмотри Для чего нужен define?
Yandex
Объявления
29.07.2009, 23:39     Представление целых чисел массивом байтов
Ответ Создать тему
Опции темы

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