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

Задание(( даже незнаю с чего начать... - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
magistr011
 Аватар для magistr011
6 / 6 / 0
Регистрация: 22.10.2011
Сообщений: 164
02.11.2011, 16:20     Задание(( даже незнаю с чего начать... #1
Программы реализуются как ассемблерные вставки в языке высшего уровня (Паскаль, С++ и т.д.).

Заданы два числа <16. Найти их произведение и с помощью битовых операций записать оба множителя и их произведение одно за другим в ячейку памяти размером в два байта без пропуска битов.

Две свои программы написал на C++ Builder 6
summa(Aij * X) + summa(Bi * Y) и (A * X + B) div (C * X2 + D * X + E)
тут надо было вычислить, вычисления асмом а запрос на ЯВУ...

А в этой задаче немогу понять, как наглядно показать, что оба множителя и их произведение записаны в ячейку памяти размером в два байта без пропуска битов. Каким образом в Builder C++ можно показать ячейку??? Помогите советом пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2011, 16:20     Задание(( даже незнаю с чего начать...
Посмотрите здесь:

C++ Незнаю как решить задание
C++ с чего начать?
Написал задание с классами, по примеру, но в public выдает ошибки, незнаю как их переделать :) C++
C++ Хочу начать учить C++ с чего начать?
С чего начать? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
02.11.2011, 16:29     Задание(( даже незнаю с чего начать... #2
magistr011, определяете количество бит, необходимых для представления числа 15. Это 4 бита. 0000 = 0, 1111 = 15. Считаете. Затем OR'ите их в переменную размером в два байта, сдвигая их на необходимое количество бит влево/вправо.
Revol'veR
 Аватар для Revol'veR
23 / 23 / 2
Регистрация: 05.11.2010
Сообщений: 134
02.11.2011, 16:29     Задание(( даже незнаю с чего начать... #3
Вставка ассемблерного кода
_asm
{
функции ассеблера
}
magistr011
 Аватар для magistr011
6 / 6 / 0
Регистрация: 22.10.2011
Сообщений: 164
02.11.2011, 16:58  [ТС]     Задание(( даже незнаю с чего начать... #4
Ребята я асм вставлю конеш, только как в Builder C++ это показать??? В Label выводить результат??? И как показать, что это именно 2 байта, а не 3 или 4???

Может просто реализовать запрос чисел на С++ ,а само вычисление на асме и в вычислении данные без какой либо визуализации поместить по адресу и в 2 байта...
2 байта это ведь FF FFh т.е. 65536d
Но есть прикол, которого я пока непонял... 1байт FF это одна цифра, а надо разместить три цифры в 2 байта, а не в три... как например 16*16=256 всетри числа записать в 2 байта без пропуска битов))
Ведь тут по сути три бита нужно для записи... (16d)10h * (16d)10h = (256d)100h это вообще 4 бита? (в скобках я написал те же числа, только в шесн-й системе) т.е. 10 10 100 - это никак не 2 бита(((

Добавлено через 8 минут
Вроде что-то такое...
0000 0000 0000 0000 это 2 байта, нужно сюда поместить, без пропуска
битов это: 16 (1 0000b) 16 (1 0000b) 256 (1 0000 0000b) но мне пока неясно как(((
буква "b" в конце - это двоичная система (не знак, это для компилятора пометка)

Добавлено через 2 минуты
Цитата Сообщение от talis Посмотреть сообщение
Затем OR'ите их в переменную размером в два байта, сдвигая их на необходимое количество бит влево/вправо.
Друг, пример покажи пожалуйста...
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
02.11.2011, 17:30     Задание(( даже незнаю с чего начать... #5
Пример:

- Байт 1 - Байт 2 -
0000'0000 0000'0000 <--- исходная переменная
0000'0000 0000'1000 <--- записано первое число, 8 (1000)
0000'0000 1100'1000 <--- записано второе число, 12 (1100)
0000'0011 1100'1000 <--- записано третье число, 3 (0011)


Добавлено через 4 минуты
Цитата Сообщение от magistr011 Посмотреть сообщение
Заданы два числа <16.
Значит 16 не включается в этот диапазон: 0 .. 15.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
02.11.2011, 17:35     Задание(( даже незнаю с чего начать... #6
Цитата Сообщение от talis Посмотреть сообщение
этот диапазон: 0 .. 15.
Иначе их произведение превысит байт и задание будет не выполнимо.)
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
02.11.2011, 17:39     Задание(( даже незнаю с чего начать... #7
Хотя... Отрицательные числа дополнительным кодом никто не отменял, так что может быть -8 .. 7

Добавлено через 25 секунд
Хотя в вопросе записи это не имеет значения
magistr011
 Аватар для magistr011
6 / 6 / 0
Регистрация: 22.10.2011
Сообщений: 164
02.11.2011, 17:47  [ТС]     Задание(( даже незнаю с чего начать... #8
Цитата Сообщение от talis Посмотреть сообщение
Заданы два числа <16.
простите((( я неправильно написал задание ((( <=16
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
02.11.2011, 17:49     Задание(( даже незнаю с чего начать... #9
Цитата Сообщение от magistr011 Посмотреть сообщение
<=16
Произведение может не влезть в байт. 16 > полубайта. Задание не решаемо.
magistr011
 Аватар для magistr011
6 / 6 / 0
Регистрация: 22.10.2011
Сообщений: 164
02.11.2011, 17:53  [ТС]     Задание(( даже незнаю с чего начать... #10
Цитата Сообщение от talis Посмотреть сообщение
- Байт 1 - Байт 2 -
0000'0000 0000'0000 <--- исходная переменная
0000'0000 0000'1000 <--- записано первое число, 8 (1000)
0000'0000 1100'1000 <--- записано второе число, 12 (1100)
0000'0011 1100'1000 <--- записано третье число, 3 (0011)
Это всё супер, но как например если...

0000'0000 0000'0000 <--- исходная переменная
0000'0000 0001'0000 <--- записано первое число, 16 (1 0000)
0000'0001 0000'1000 <--- записано второе число, 16 (1 0000)
0000'0001 0000'1000 <--- записано третье число, 256 (1 000 000) куда это писать???

ведь нудно множители и их произведение в два байта уложить...
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
02.11.2011, 17:54     Задание(( даже незнаю с чего начать... #11
16 = 1 0000 = 5 бит

5 * 3 = 15, в двух байтах 16 бит. Или я туплю?
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
02.11.2011, 18:02     Задание(( даже незнаю с чего начать... #12
Цитата Сообщение от talis Посмотреть сообщение
5 * 3 = 15, в двух байтах 16 бит. Или я туплю?
Но произведение 16*16 = 9 бит.
9+5+5 = 19, а не 16
magistr011
 Аватар для magistr011
6 / 6 / 0
Регистрация: 22.10.2011
Сообщений: 164
02.11.2011, 18:02  [ТС]     Задание(( даже незнаю с чего начать... #13
Цитата Сообщение от talis Посмотреть сообщение
в двух байтах 16 бит
канеш... 1 байт = 8 бит
2 байта = 16 бит
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
02.11.2011, 18:03     Задание(( даже незнаю с чего начать... #14
Цитата Сообщение от Deviaphan Посмотреть сообщение
Но произведение 16*16 = 9 бит.
9+5+5 = 19, а не 16
М-да, про произведение-то я забыл
magistr011
 Аватар для magistr011
6 / 6 / 0
Регистрация: 22.10.2011
Сообщений: 164
02.11.2011, 18:05  [ТС]     Задание(( даже незнаю с чего начать... #15
Цитата Сообщение от Deviaphan Посмотреть сообщение
16*16 = 9 бит
правильно
1 0000 0000 = 256

Добавлено через 1 минуту
Цитата Сообщение от talis Посмотреть сообщение
Затем OR'ите их в переменную размером в два байта, сдвигая их на необходимое количество бит влево/вправо.
примерчик бы (( Думаю здесь ответ...
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
02.11.2011, 18:05     Задание(( даже незнаю с чего начать... #16
Цитата Сообщение от magistr011 Посмотреть сообщение
1 000 000 = 256
Это в какой системе счисления? .)
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
02.11.2011, 18:09     Задание(( даже незнаю с чего начать... #17
Цитата Сообщение от magistr011 Посмотреть сообщение
примерчик бы (( Думаю здесь ответ...
Я же уже давал примерчик. Дальше головой, самостоятельно. Читайте про битовые сдвиги, про поразрядные операции... Ну или идите по дороге жёлтых кирпичей к доброму Гудвину. Как Страшила
magistr011
 Аватар для magistr011
6 / 6 / 0
Регистрация: 22.10.2011
Сообщений: 164
02.11.2011, 18:12  [ТС]     Задание(( даже незнаю с чего начать... #18
Цитата Сообщение от Deviaphan Посмотреть сообщение
Сообщение от magistr011
1 000 000b = 256d
Это в какой системе счисления? .)
1 000 000b = 256d
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
02.11.2011, 18:14     Задание(( даже незнаю с чего начать... #19
Цитата Сообщение от magistr011 Посмотреть сообщение
1 000 000b = 256d
Это ты только так думаешь.) Считай нолики внимательнее.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2011, 18:16     Задание(( даже незнаю с чего начать...
Еще ссылки по теме:

C++ С чего начать?
С чего начать? C++
Задание: разработать "Интерпретатор языка". С чего начать? C++

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

Или воспользуйтесь поиском по форуму:
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
02.11.2011, 18:16     Задание(( даже незнаю с чего начать... #20
http://www.cyberforum.ru/cgi-bin/latex.cgi?{1000000}_{2} = {64}_{10}; http://www.cyberforum.ru/cgi-bin/latex.cgi?{100000000}_{2} = {256}_{10};
Yandex
Объявления
02.11.2011, 18:16     Задание(( даже незнаю с чего начать...
Ответ Создать тему
Опции темы

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