Редактирование:
UCONVERT
(раздел)
Перейти к навигации
Перейти к поиску
Внимание:
Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы
войдёте
или
создадите учётную запись
, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.
Анти-спам проверка.
Не
заполняйте это!
== Реализация == <pre> 3183 ;#UCONVERT 3184 ; UCONVERT ( u a −− u1 a1 ) Преобразовать u и литеры от a+1 в u1 и a1 −− адрес первой не цифры. 3185 LPNUMB: .DB 8 3186 .TEXT "UCONVERT" 3187 .DW LWORD 3188 PNUMB: .DW CALL 3189 BN: .DW ONEP, DUP,TOR, CAT, BASE,UAT, DIGIT, ZBRAN,MMO 3190 .DW SWAP, BASE,UAT,STAR, PLUS 3191 .DW DPL,AT, ONEP, ZBRAN,BN1, ONE,DPL,PSTOR ; Увеличить DPL на единицу, если там не −1 3192 BN1: .DW FROMR, BRAN,BN 3193 MMO: .DW FROMR, EXIT </pre> Реализация из SP-Forth 4.20: <pre> : >NUMBER ( ud1 c-addr1 u1 -- ud2 c-addr2 u2 ) \ 94 \ ud2 - результат преобразования символов строки, заданной c-addr1 u1, \ в цифры, используя число в BASE, и добавлением каждой к ud1 после \ умножения ud1 на число в BASE. Преобразование продолжается слева \ направо до первого непреобразуемого символа, включая символы "+" и "-", \ или до полного преобразования строки. \ c-addr2 - адрес первого непреобразумого символа или первого символа \ за концом строки, если строка была полностью преобразована. \ u2 - число непреобразованных символов в строке. \ Неоднозначная ситуация возникает, если ud2 переполняется во время \ преобразования. BEGIN DUP WHILE >R DUP >R C@ BASE @ DIGIT 0= \ ud n flag IF R> R> EXIT THEN \ ud n ( ud = udh udl ) SWAP BASE @ UM* DROP \ udl n udh*base ROT BASE @ UM* D+ \ (n udh*base)+(udl*baseD) R> CHAR+ R> 1- REPEAT ; </pre> === Советская реализация === Описание и определение слова CONVERT в ядре ФОРТ-ЕС: <PRE> CONVERT WD1,A1,->WD2,A2 ПРЕОБРАЗОВАТЬ WD1 И ЛИТЕРЫ 39 ОТ А1+1 В WD2 И А2 - АДРЕС 1-ОЙ НЕ ЦИФРЫ Экран номер 39 ( 31.03.86 DIGIT CONVERT NUMBER ) : CONVERT ( WD1,AI->WD2,A2) BEGIN 1+ DUP >R C@ BASE @ DIGIT WHILE SWAP BASE @ UM* DROP ROT BASE @ UM* D+ DPL @ 1+ IF DPL 1+! THEN R> REPEAT R> ; </PRE>
Описание изменений:
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см.
Pmkwiki:Авторские права
).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!
В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:
Отменить
Справка по редактированию
(в новом окне)
Навигация
Персональные инструменты
Вы не представились системе
Обсуждение
Вклад
Создать учётную запись
Войти
Пространства имён
Статья
Обсуждение
русский
Просмотры
Читать
Править
История
Ещё
Поиск
Навигация
Заглавная страница
Свежие правки
Случайная страница
Справка по MediaWiki
Инструменты
Ссылки сюда
Связанные правки
Служебные страницы
Сведения о странице