|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.04.2010, 15:04 | #1 |
Регистрация: 23.04.2010
Сообщений: 8
|
Сегмент байта (Паскаль)
Запутался я совсем
цель зделать две функции. Одна функция делит байт на два сегмента и возвращает два значения в пределах F (16ти) Вторая функция возвращает изначальный байт из двух сегментов (F И F) Вообще что-то по аналогии с переменными word где можно верхний и нижний байт отделить. Очень смутно пытался сделать что-то типа polbyte1 := (byteN shr 2) and $ff; Я что-то не соображу если у нас сдвиг то побитовый то может его надо на 8 ставить? Или на 16? Чего то ерунда какая то получается у меня, не могу сообразить. Подскажите пожалуйста как отделить верхний и нижний сегмент байта? Но так конечно чтобы байт можно было обратно востановить. :-) Последний раз редактировалось Dizistar; 23.04.2010 в 15:10. Причина: убрал лишнюю строку кода |
23.04.2010, 17:22 | #2 |
А может и не...
Участник клуба
Регистрация: 27.03.2010
Сообщений: 1,269
|
LoByte:=byteN and $0F - так получишь младшую половинку байта
HiByte:=byteN and $F0 - так получишь старшую половинку байта Логически сложишь две половинки - получишь исходный байт...
Перемешивай дело с бездельем и не сойдешь с ума...
|
23.04.2010, 19:02 | #3 |
Регистрация: 23.04.2010
Сообщений: 8
|
|
23.04.2010, 19:15 | #4 |
Регистрация: 23.04.2010
Сообщений: 8
|
В паскале не работает, вроде и ошибку не пишет но и результата 0 - убедись:
Код:
|
23.04.2010, 19:34 | #5 |
Пользователь
Регистрация: 25.03.2010
Сообщений: 15
|
логическое сложение - это операция and.
по-моему делать надо так: VAR b,bL,bH : byte; BEGIN readln(b); bL:=(b shl 4) shr 4; // младший полубайт bH:=b and $FF; // старший полубайт END. Последний раз редактировалось UnderwooD; 23.04.2010 в 19:40. |
23.04.2010, 19:35 | #6 | ||
Форумчанин
Регистрация: 12.04.2010
Сообщений: 134
|
Цитата:
Цитата:
кому нужна помощь! жду в аське и скайпе!
|
||
23.04.2010, 19:41 | #7 |
Пользователь
Регистрация: 25.03.2010
Сообщений: 15
|
ой, точно!
попутал! |
23.04.2010, 21:01 | #8 |
Регистрация: 23.04.2010
Сообщений: 8
|
Нет не подходит и младший и старший полубайт получается равен заданному байту.
То есть в обоих случаях выводит 240: Код:
Последний раз редактировалось Dizistar; 23.04.2010 в 21:09. |
24.04.2010, 22:52 | #9 |
Пользователь
Регистрация: 25.03.2010
Сообщений: 15
|
Упс! Извиняюсь! Писал по памяти - насвинячил. Надо так:
by:=byteN shl 4; by:=by shr 4; // младший полубайт by2:=by shr 4; // старший полубайт Все, теперь косяк точно исправлен! |
24.04.2010, 22:54 | #10 |
Пользователь
Регистрация: 25.03.2010
Сообщений: 15
|
А как свой код выделять, когда пишешь?
Я просто третий раз в жизни на форум зашел. =) |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
перенос сегмента кода за сегмент данных | Федор777 | Общие вопросы C/C++ | 2 | 20.04.2010 18:43 |
Как вынести объявление переменных в отдельный сегмент кода | boris-blade | Microsoft Office Word | 1 | 16.01.2010 19:31 |
Сегмент стека | Santilos | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 24.12.2008 18:47 |
взятие старшего и младшего байта | Djaconda | Общие вопросы Delphi | 2 | 29.09.2008 09:25 |
Вывод байта в двоичном пердставлении (С++) | trollik | Помощь студентам | 6 | 01.09.2008 23:55 |