Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
magistr011
6 / 6 / 2
Регистрация: 22.10.2011
Сообщений: 164
#1

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

02.11.2011, 16:20. Просмотров 1770. Ответов 40
Метки нет (Все метки)

Программы реализуются как ассемблерные вставки в языке высшего уровня (Паскаль, С++ и т.д.).

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

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

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

Задание: разработать "Интерпретатор языка". С чего начать?
Здравствуйте, вручили темку на курсовик, ну точнее как вручили, не успел взять...

Незнаю как решить задание
Дано четырехзначное число.Найти: а.)сумму его цифр; б.)произвидение ео...

Хочу начать учить C++ с чего начать?
Посоветуйте действительно хорошие книги/видео уроки по этому языку. За спиной у...

Написал задание с классами, по примеру, но в public выдает ошибки, незнаю как их переделать :)
# include &quot;stdafx.h&quot; # include &lt;conio.h&gt; #include &lt;iostream&gt; #include...

С чего бы начать...
Здравствуйте, все! Я новичок на вашем форуме. Немного о себе: В начале этого...

с чего начать
я сейчас обучаюсь в одном заведении (чтото вроди кружка) C#-у. нам там пока...

40
talis
793 / 545 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
02.11.2011, 16:29 #2
magistr011, определяете количество бит, необходимых для представления числа 15. Это 4 бита. 0000 = 0, 1111 = 15. Считаете. Затем OR'ите их в переменную размером в два байта, сдвигая их на необходимое количество бит влево/вправо.
0
Revol'veR
23 / 23 / 4
Регистрация: 05.11.2010
Сообщений: 134
02.11.2011, 16:29 #3
Вставка ассемблерного кода
_asm
{
функции ассеблера
}
0
magistr011
6 / 6 / 2
Регистрация: 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'ите их в переменную размером в два байта, сдвигая их на необходимое количество бит влево/вправо.
Друг, пример покажи пожалуйста...
0
talis
793 / 545 / 61
Регистрация: 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.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
02.11.2011, 17:35 #6
Цитата Сообщение от talis Посмотреть сообщение
этот диапазон: 0 .. 15.
Иначе их произведение превысит байт и задание будет не выполнимо.)
0
talis
793 / 545 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
02.11.2011, 17:39 #7
Хотя... Отрицательные числа дополнительным кодом никто не отменял, так что может быть -8 .. 7

Добавлено через 25 секунд
Хотя в вопросе записи это не имеет значения
0
magistr011
6 / 6 / 2
Регистрация: 22.10.2011
Сообщений: 164
02.11.2011, 17:47  [ТС] #8
Цитата Сообщение от talis Посмотреть сообщение
Заданы два числа <16.
простите((( я неправильно написал задание ((( <=16
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
02.11.2011, 17:49 #9
Цитата Сообщение от magistr011 Посмотреть сообщение
<=16
Произведение может не влезть в байт. 16 > полубайта. Задание не решаемо.
0
magistr011
6 / 6 / 2
Регистрация: 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) куда это писать???

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

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

Добавлено через 1 минуту
Цитата Сообщение от talis Посмотреть сообщение
Затем OR'ите их в переменную размером в два байта, сдвигая их на необходимое количество бит влево/вправо.
примерчик бы (( Думаю здесь ответ...
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
02.11.2011, 18:05 #16
Цитата Сообщение от magistr011 Посмотреть сообщение
1 000 000 = 256
Это в какой системе счисления? .)
0
talis
793 / 545 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
02.11.2011, 18:09 #17
Цитата Сообщение от magistr011 Посмотреть сообщение
примерчик бы (( Думаю здесь ответ...
Я же уже давал примерчик. Дальше головой, самостоятельно. Читайте про битовые сдвиги, про поразрядные операции... Ну или идите по дороге жёлтых кирпичей к доброму Гудвину. Как Страшила
0
magistr011
6 / 6 / 2
Регистрация: 22.10.2011
Сообщений: 164
02.11.2011, 18:12  [ТС] #18
Цитата Сообщение от Deviaphan Посмотреть сообщение
Сообщение от magistr011
1 000 000b = 256d
Это в какой системе счисления? .)
1 000 000b = 256d
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
02.11.2011, 18:14 #19
Цитата Сообщение от magistr011 Посмотреть сообщение
1 000 000b = 256d
Это ты только так думаешь.) Считай нолики внимательнее.
0
talis
793 / 545 / 61
Регистрация: 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};
0
02.11.2011, 18:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2011, 18:16
Привет! Вот еще темы с решениями:

С чего начать?
ребят подскажите,ужасно хочу занятся програмированием хотябы чему то...

С чего начать?
Очень сильно научиться писать хотя бы примитивный софт по типу чекеров,...

С чего начать?
Доброго времени суток! Хочу выучить язык С++, подскажите с чего лучше начать...

С чего начать?
Хочу изучить C++ Пожалуйста посоветуйте что прочесть и какую прогу и где...


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

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

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