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

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

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

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

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

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

Представление целых и вещественных чисел. Основные арифметические и логические операции. - C++
Часть 1. Вычислить площадь эллипса, если известны длины его полуосей. Какие флаги во флаговом регистре изменились при выполнении...

Условные операторы при работе с массивом целых чисел - C++
Дан массив целых чисел. Выяснить верно ли, что сумма элементов, которые больше 20, превышает 100.

Создать класс для работы с двумерным массивом целых чисел - C++
Добрый день! Вторая (и последующие) лабораторная выглядит так: Что-то писал сам, что-то брал из интернета, получился такой код....

Написать функции для выполнения операций над одномерным массивом целых чисел - C++
Написать функции для выполнения операций над одномерным массивом целых чисел: • определить среднее арифметическое отрицательных элементов...

Задан массив K(m) попарно различных целых чисел. Получить все перестановки целых чисел - C++
Помогите пожалуйста с программой. Задан массив K(m) попарно различных целых чисел. Получить все перестановки целых чисел

Написать шаблоны функций для для вычисления суммы произведений двух соседних чисел для трех целых чисел и в одномерном массиве целых чисел - C++
Написать шаблоны функций для для вычисления суммы произведений двух соседних чисел для трех целых чисел и в одномерном массиве целых чисел:...

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

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

поставлено в методичке надо будет с преподом обсудить
0
odip
Эксперт С++
7157 / 3297 / 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.

Это массив байт или бит ?
Думаю что нужно складывать и вычитать именно такие числа.
0
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
29.07.2009, 21:11 #6
В общем попытаюсь сегодня сделать, если время будет...
0
odip
Эксперт С++
7157 / 3297 / 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).
Операцию сложения мы умеем делать.
Операцию смены знака мы тоже умеем делать.
Значит можем сделать и вычитание.
2
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
29.07.2009, 21:48 #8
odip, тогда не буду даже пробовать . Я просто паралельно другим делом занят)))
0
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
29.07.2009, 23:01 #9
Хотя вычитание можно сделать напрямую.
Нужно только вместо однобитного флага переноса сделать однобитный флаг заема.
0
grom
1 / 1 / 0
Регистрация: 09.02.2009
Сообщений: 31
29.07.2009, 23:26  [ТС] #10
Спасибо большое за помощь! только мне не совсем понятно вот это
#define MAX_BVAL_BYTES 16
0
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
29.07.2009, 23:39 #11
grom, подстановка, по типу
C++
1
const int MAX_BVAL_BYTES = 16;
т.е. везде вместо MAX_BVAL_BYTES будет подставлятся это значение(тип определяется компилятором).
По этому вопросу посмотри Для чего нужен define?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2009, 23:39
Привет! Вот еще темы с ответами:

Дан файл целых чисел. Создать новый файл целых чисел, содержащий длины всех серий исходного файла. - C++
Задачу нужно решить в Borland C++ 3.11 Дан файл целых чисел. Создать новый файл целых чисел, содержащий длины всех серий исходного файла...

Дан файл целых чисел. Создать новый файл целых чисел, содержащий длины всех серий исходного файла - C++
Дан файл целых чисел. Создать новый файл целых чисел, содержащий длины всех серий исходного файла (серией называется набор последова- ...

Сумма всех целых чисел от целых чисел от A до B включительно - C++
Даны два целых числа A и B (A &lt;B) Знай сумму всех целых чисел от целых чисел от A до B включительно.

Даны два целых числа A и B (A < B). Найти сумму всех целых чисел от A до B включительно - C++
Даны два целых числа A и B (A &lt; B). Найти сумму всех целых чисел от A до B включительно. как это реализовать на с++??


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.07.2009, 23:39
Ответ Создать тему
Опции темы

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