Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 17:01

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - Описание битовых полей и работа с ними
Автор Сообщение
  Заголовок сообщения:  Re: Описание битовых полей и работа с ними  Ответить с цитатой
dynamic-wind писал(а):
Заметил магическое число 32

ну, можно и так:
32 CONSTANT WIDTH
...

или, скажем:
0 >L -1 BEGIN 1 LSHIFT *WHILE 1 L+ REPEAT DROP L> CONSTANT WIDTH
Сообщение Добавлено: Чт дек 06, 2012 21:18
  Заголовок сообщения:  Re: Описание битовых полей и работа с ними  Ответить с цитатой
Заметил магическое число 32 :twisted:
Сообщение Добавлено: Чт дек 06, 2012 20:39
  Заголовок сообщения:  Описание битовых полей и работа с ними  Ответить с цитатой
source file: bfields.fts
\ 23.11.2012 mOleg
\ Copyright [C] 2012 mOleg mOlegg@ya.ru
\ описание битовых полей

math/ asmadd.fts
math/ double.fts

\ по смещению disp битового поля длиной # бит определить маску для битового
\ поля, таким образом, что AND с данной маской оставит только нужные биты
: mask ( disp # --> mask ) BIT 1 - SWAP LSHIFT ;

\ создать описатель битового поля длиной # бит со смещением boff бит влево
: FLD[] ( boff # / name --> boff ) >L
CREATE DUP 32 /MOD , L@ mask , L> +
( base --> mask addr )
DOES> D@ ROT + ;

\ создать описатель битового поля длиной 1 бит со смещением boff бит влево
: BIT[] ( boff / name --> boff ) 1 FLD[] ;

?DEFINED test{ \EOF -- тестовая секция ---------------------------------------

test{
\ описание структуры битового поля
0 \ начальное битовое смещение
BIT[] first \ поле размером в один бит (битовый флаг)
3 FLD[] second \ поле размером в три бита
BIT[] thrid
BIT[] fourth
2 FLD[] fifth
2 FLD[] sixth
8 FLD[] seventh
2 FLD[] eighth
BIT[] nineth
DROP

10 first 10 <> THROW 0x00000001 <> THROW
10 second 10 <> THROW 0x0000000E <> THROW
10 thrid 10 <> THROW 0x00000010 <> THROW
10 fourth 10 <> THROW 0x00000020 <> THROW
10 fifth 10 <> THROW 0x000000C0 <> THROW
10 sixth 10 <> THROW 0x00000300 <> THROW
10 seventh 10 <> THROW 0x0003FC00 <> THROW
10 eighth 10 <> THROW 0x000C0000 <> THROW
10 nineth 10 <> THROW 0x00100000 <> THROW

}test
Сообщение Добавлено: Чт дек 06, 2012 19:01

Часовой пояс: UTC + 3 часа [ Летнее время ]


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB