Ремесло программиста

Объявление

форум на движке phpBB доступен для тестирования
www.strategia.space
www.strategia.space/forum/
по предложению Лиса - канал на Matrix - #remdev:matrix.org

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Ремесло программиста » Кодирование символов » шестнадцатеричные цифры по-русски


шестнадцатеричные цифры по-русски

Сообщений 1 страница 26 из 26

1

В качестве цифр этой системы счисления обычно используются цифры от 0 до 9 и латинские буквы от A до F.
Буквы A, B, C, D, E, F имеют значения 1010, 1110, 1210, 1310, 1410, 1510 соответственно.

Вопрос мой прост - как русифицировать хексдамп?
Вопрос важный, так как без этого я не могу даже описать
кодирование целого числа, как сделано в статье https://en.wikipedia.org/wiki/Variable-length_quantity

Использовать буквы не в алфавитном порядке [0-9АБЦДЕФабцдеф] - непатриотично.

Переходить на символы русского алфавита с надчёркиваниями? так от этого отказались, и наверное неспроста.
А потом там ещё буква Ё появилась.

а̅б̅в̅г̅ д̅е̅ё̅ж̅ з̅и̅й̅к̅ л̅м̅н̅о̅

Это будет непривычно для школьников, которых учат арабским цифрам
(какой позор - заимствовать у арабов. Не могли свои цифры придумать. Теряем самостоятельность в математике.
Как могут оправдаться предки за потерю суверенитета в этом вопросе?)

Придумать шесть новых глифов?

Была у меня идея использовать символы АЦТГ (основания ДНК), но тогда дамп будет занимать больше места в ширину (потому что 256=4^4=16^2, а 4 символа длиннее 2).

Отредактировано ВежливыйЛис (2016-12-29 05:29:10)

2

Вспомним выражение "Доброзол".  Так и здесь. С одной стороны - эти 10 пальцев на руках сделали доброе дело и научили нас уверенно считать и оперировать преимущественно десятками, но с другой стороны - сыграли злую шутку с нашим мозгом, отняв у нас приобретение привычки к иным методам счисления.
Пример:
Квадрат на бумаге имеет 4 внутренних угла (т. е. 4 разряда). Применив к каждому из углов ту же двоичную систему счисления - воочию убеждаемся не только в возможности посчитать от 0 до 15, но  и в наглядности и красоте предложенного примера.
Отсюда:
Треугольник по углам вмещает от 0 до 7, квадрат - от 0 до 15,
тетраэдр - то же, что и квадрат, но по сумме углов каждой из внешних сторон - от 0 до 4095, куб - от 0 до 255, но по сумме углов каждой из внешних сторон - от 0 до 16777215.
- Могу продемонстрировать это с помощью "песочниц", но надо сначала время для этой "стряпни" выкроить... )))

Отредактировано Сандро (2016-12-29 07:32:44)

3

АБВГДЕ

Код:

ЯСМх86.заголовок = 'ГЗО для ЯЗагрузчика'

ЯСМх86.укладка = простая

ЯСМх86.486 = включить

ЯСМх86.начало= инструктаж

ОТРЫВОК инструктаж ШИФР16

ОТОБРАЗИТСЯ инструктаж в ОИ

ИСТОК 7В00Ш

; ИСТОК 100Ш

Инструктаж:

; ГЗО или MBR предназначен для:

; 1) Сохранения в памяти таблицу разделов

; 2) Загрузить 1 сектор выделенного раздела

; 3) Отослать к нему исполнителя. Передать ему в ЯВА-указатель на выбранный раздел

; Настроить

; ОД=0

; ОИ:УКА указывают на физ адрес 0:7В000Ш

; ЯД.М - номер накопителя, его передаем в функцию чтения ядра с диска

; 4) Дополнительно настроить стопку
; 5) Определить сервис для чтения СТЫК 13Ш функция 02Ш или 42Ш и предать номер сервиса

; Входные параметры MBR

; после перемещения кода из MBR в 7В00Ш

; состояние регистров будет следующее:

; ОИ:УКА указывают на физ адрес 7В00Ш любой комбинацией

; ЯД.М - номер накопителя, его передаем в функцию чтения ядра с диска

; О состоянии склада нам неизвестно, поэтому его надо настроить

ОТМИГ ; Мало вероятно но возможно что стопка не настроен, а прерывания разрешены

КСОР ЯН, ЯН

ПРИС ОС, ЯН ; Так как тут идет установка стопки в 2 инструкции

ПРИС УСА,7В00Ш ; ОТМИГ предотвращает вызов между ними мига

; 4) стопка настроена

ЛОЖИ ЯН

БЕРИ ОВ

ЛОЖИ ОИ

БЕРИ ОД

РАМИГ ; Разрешаем прерывания

ПРИС ЯСУ.Направление, к_старшим ;Настраиваем флаг направления присвоения.

ПРИС ЯВА,смещение @@найти_выделенный_раздел

ПРИС ЯВБ,смещение @@найти_выделенный_раздел - (смещение инструктаж)+600Ш

ЛОЖИ ЯН ; сохраняем адрес для ВОЗ по ДАЛЕЕ

ЛОЖИ ЯВБ

ПРИС ЯС, (смещение инструктаж) - (смещение @@найти_выделеный_раздел)+200Ш

ПОВЕНН ПРИСРБ

; ПРЫГ на @@найти_выделенный_раздел

ВОЗ по ДАЛЕЕ ; Переходим на новое место.

; Теперь регистры ОИ и УКА точно определены

; 1) Таблица разделов сохранена

; И мы можем загрузить ЗО на место MBR 7В00Ш

@@найти_выделенный_раздел:

ЛОЖИ ЯН

БЕРИ ОД

ПРИС ЯВА,07BДШ ; устанавливаем указатель на таблицу разделов

ПРИС ЯС,80Ш

ПРИС ЯС.М,4

@@Круг:

СРАВ [ЯВА], ЯС

ЕРП Прочитать_загрузочный_отрывок

СЛОЖ ЯВА,10Ш

УМЕН ЯС.М

ЕННП на @@Круг

ВЫП стык[19Ш] ; Ошибка нет загрузочного раздела пробуем следующее загр. устройство

Прочитать_загрузочный_отрывок:

ЛОЖИ ОИ

ЛОЖИ смещение напечатать

ВЫП проверить_СТЫК_13Ш

ЛОЖИ ОИ

ЛОЖИ ЯН

ПРИС РЯН,[ЯВА+8]

ПРИС ЯВБ,7В00Ш

ПРИС ЯО,УСА

ВЫП по 4 байта [ЯО] ; 2) Выполняем прочитать_по_ЛАС c параметрами чтения загрузочного отрывка

ЛОЖИ ОД

ЛОЖИ ЯВБ

ВОЗ по ДАЛЕЕ ; 3) Идем выполнять загрузочный отрывок

проверить_СТЫК_13Ш: ; 5) Потом дописать проверку на поддержу 42Ш функции стыка 13Ш

ПРИС ЯН, (смещение прочитать_по_ЛАС) -(смещение инструктаж)+600Ш

ВОЗ

; входные параметры

; РЯН - ЛАС адрес

; ОД:ЯВА - адрес загрузки

прочитать_по_ЛАС:

ЛОЖИ ВСЁ

ЛОЖИ ЯД

ЛОЖИ РЯН

ПРИС ЯН.С,08

ВЫП стык[13Ш] ; ЯН.С - самочувствие 00Ш нет ошибки

; ЯС - с 0 по 6 бит макс. число секторов (от 1 до 63)

; ЯС - с 8 по 15 бит и с 7 по 8 биты макс число цилиндров (от 0 до 3ЕЕДШ)

; +---------+--------+

; |15 8|7 0|

; +---------+--------+

; |876543210|09 |

; +---------+--------+

; |876543210| 543210|

; +---------+--------+

; ЯД.М - число подключенных дисков
; ЯД - макс число головок (от 0Д до 255Д)

ПРИС ЯН.М, ЯС.М

БУЛИ ЯН.М, 111111Б ; число секторов на дорожку (биты 5-0)

РЗНАК по СЛОВО ; переводим Байт в Слово.

ПРИС ЯО.М, ЯД ;

ПРИС ЯО, ЯН.С

УВЕЛ ЯО ; число головок на цилиндр

ОБМ ЯН,ЯО

МНОЖ ЯО ; ЯН:ЯД := (число головок x Сектора)

ПРИС ЯС,ЯН ; ЯС := ЯН (ЯД- всегда ноль)

ЛАС_В_ГАС:

; ЛАС - линейный адрес сектора

; ЛАС = (((Цилиндр * головок_на_цилиндр)+головка)*секторов_на_дорожку)+сектор - 1

; Цилиндр=ЛАС ДЕЛИ (головок_на_цилиндр*секторов_на_дорожку)

; временная_переменная=ЛАС % (головок_на_цилиндр*секторов_на_дорожку)

; головка=временная_переменная ДЕЛИ секторов_на_дорожку

; сектор=временная_переменная ДЕЛИ секторов_на_дорожку +1

БЕРИ РЯН

ПРИС УСБ, УСА

ПРИС ЯД, по СЛОВАМ [УСБ-2]

ДЕЛИ ЯС

ЛОЖИ ЯН

ПРИС ЯН,ЯД

КСОР ЯД,ЯД

ДЕЛИ ЯО

УВЕЛ ЯД

ПРИС ЯС,ЯД

ПРИС ЯД,ЯН.М

БЕРИ ЯН

ПРИС ЯС,ЯН.М

КЛА ЯН.С, 6

БИЛИ ЯС.М,ЯН.С

прочитать_по_ГАС:

ПРИС ЯН.М,1

ПРИС ЯН.С,2

ПРИС УСБ,УСА

ПРИС ЯД.М, по байтам [УСБ]

ПРИС ЯО,ЯВБ

ВЫП СТЫК[13Ш]

ЕПСП на неудачу

БЕРИ ЯД

БЕРИ ВСЁ

ВОЗ по ДАЛЕЕ

неудача:

ПРИС ЯС,(смещение пустота) -(смещение системная_ошибка)

ПРИС УСБ, смещение системная_ошибка

ВЫП по ДАЛЕЕ напечать_строку

ВЫП СТЫК[18Ш] ; Ждём нажатия клавиши

напечать_строку:

ЛОЖИ ВСЁ

ПРИС ЯН,1300Ш

ПРИС ЯО,7

ПРИС ЯД,0

ЛОЖИ ОИ

БЕРИ ОВ

ВЫП СТЫК[10Ш]

БЕРИ ВСЁ

ВОЗ по ДАЛЕЕ

КОНЕЦ иструктожа

ОТРЫВОК данные

системная_ошибка: ДАБ 'System Error'

пустота:

ДАБ (512-2+(смещение инструктаж)-(смещение пустота)-16*4-8) раз (00Ш)

ДАБ 'ПЕРВООСЬ'

таблица_разделов:

раздел0:

ДАБ 80Ш, 00Ш, 00Ш, 00Ш, 00Ш, 00Ш, 00Ш, 00Ш

ДАДС 0063Ш

ДАДС 0001Ш

раздел1:

ДАБ (16) раз (00Ш)

раздел2:

ДАБ (16) раз (00Ш)

раздел3:

ДАБ (16) раз (00Ш)

ярлык:

ДАБ 55Ш, 0ААШ

КОНЕЦ данных

4

Павиа написал(а):

или MBR


С этого места читать закончил. Потому что текст культурно несамодостаточен и опирается на знание английского языка.
Нужно было в комментариях русские аббревиатуры объяснить русским языком перед использованием каждой.

Так как сокращения-команды объяснять долго, нужна ещё ссылка на описание  языка (спецификацию).

И в слове "иструктожа" опечатка.

Отредактировано ВежливыйЛис (2016-12-29 10:59:58)

5

может взять название города либо другое.

0 1 2 3 4 5 6 7 8 9 М О С К В А

6

Яр написал(а):

0 1 2 3 4 5 6 7 8 9 М О С К В А


символы 0 и О слишком похожи в начертании.

На автомобильных номерных знаках, используемых в настоящее время в России,
применяются далеко не все буквы существующего алфавита, а лишь те, которые присутствуют как в латинице, так и в кириллице.
Этих букв 12 — А, В, Е, К, М, Н, О, Р, С, Т, У, Х
(буква У была принята условно соответствующей букве латинской - Y),

12 < 16, значит не годится.

Яр написал(а):

либо другое


Если переносить столицу, то лучше Ижевск.

хотя тоже проблема - 8 и В

Брянск подходит, но вызывает вопрос - почему именно этот город.
Братск, например, более по центру России находится.

Отредактировано ВежливыйЛис (2016-12-29 12:55:38)

7

ВежливыйЛис написал(а):

символы 0 и О слишком похожи в начертании

Просто у вас не русский шрифт. Нулик должен быть с косой чертой.

Отредактировано Павиа (2016-12-29 16:29:04)

8

Павиа написал(а):

Нулик должен быть с косой чертой.


Цифры какие? Арабские. Смотрим.

Черту видим? Не видим.

Вас, Павиа, как послушаешь, так и символ рубля как Лебедев начнёшь писать - с чертой, вместо исконного
http://dic.academic.ru/pictures/wiki/files/50/218px-Old_sign_of_Russian_ruble.svg.png

И в ЕСКД ГОСТ 2.304-81 никакой черты тоже нет.
http://docs.cntd.ru/picture/get?id=P00A0&amp;doc_id=1200003503&amp;size=small

Или вот ГОСТ про номера для автомобилей - тоже нет черты в нуле:
http://neo-chaos.narod.ru/useful/gost/g … 577-93.pdf

И на почте не перечёркивают
http://dic.academic.ru/pictures/wiki/files/82/Russian_postal_codes.png

Отредактировано ВежливыйЛис (2016-12-29 17:15:51)

9

Лис, ты что ноль никогда перечёркнутый невидел?

10

В чём проблема?

0..9,А,Б,В,Г,Д,Е

0шЕЕ = 0xFF

Шрифт для кириллицы и латиницы должен визуально отличаться, как на прилагаемой картинке (это тут ещё мало отличается, нужно вообще разработать специальный
шрифт, в котором будет чётко виден язык.

http://s8.uploads.ru/XdQB1.png

Нолик должен быть перечёркнутым.

11

Так уже есть смотри начертания на вики https://ru.wikipedia.org/wiki/Кириллица

12

Павиа написал(а):

Так уже есть смотри начертания на вики https://ru.wikipedia.org/wiki/Кириллица


Конкретно на этой странице из перечёркнутых есть только буква "фита":
https://upload.wikimedia.org/wikipedia/commons/2/23/Early_Cyrillic_letter_Fita.png

Цифры на странице не нарисованы. И про 16-ричные числа тоже не говорится.

13

Лис вы за темой следите. Мы уже обсуждаем начертания у русской буквы а правая сторона которой шире чем левой это ей ещё от буквы Я досталось. В отличии от лотинской буквы a котора рисуется римским щрифтом с чертами одинаковой ширины. И такие же есть правила для других букв.
Ноль часто ресуется с чертой. Возьмите любой кассовый чек.
Если буквы отличны то многие проблемы уходят. Но я бы это оставил на усмотрния разработчиков шрифтов.
http://powerman.name/images/font/screen1.gif
http://ps-tutorials.ru/uploads/posts/2015-05/1430643308_k141_map.png

Отредактировано Павиа (2016-12-29 22:21:53)

14

Павиа написал(а):

Возьмите любой кассовый чек.


http://www.libo.ru/up/9345/140805052502_20141707125400.jpg

https://www.google.ru/search?q=кассовый+чек&tbm=isch

вот 2016 год:

http://blagotvorel.cerkov.ru/files/2016/01/%D0%BA%D0%B0%D1%81%D1%81%D0%BE%D0%B2%D1%8B%D0%B9-%D1%87%D0%B5%D0%BA-%D0%BD%D0%B0-%D0%BC%D1%8F%D1%87%D0%B8.jpg

вот люди пишут, каким должен быть чек:

http://vseobip.ru/wp-content/uploads/2016/03/rekviziti-na-chek.gif

Я даже сконцентрировался, вышел из интернета, нашел чек из своей Пятёрочки (свежак, вчерашний) - нули не перечеркнуты.

Может Вы, Павиа, зажравшийся буржуй и закупаетесь только в "Азбуке вкуса"? Так тоже нет:

http://alex-larin.ru/img/raznoye/1chek_22.jpg

Даже не знаю, что и думать...

Отредактировано ВежливыйЛис (2016-12-30 00:40:10)

15

о чем спор?)
программисту дано самому решать как и что выглядит,этой возможностью нужно пользоваться.
в своей системе можно сделать "О" как просто "о" а ноль с черточкой как угодно
или это супер принципиально?
я к сожалению не имею сейчас возможности перебрать старые газеты известия для того что бы составить полную картинку шрифтов
но вот например пара денежек, ноль конечно не везде присутствует,
но вот как иногда раньше писалась буква "о" дает права понять что ее можно легко отличить от ноля
http://sg.uploads.ru/t/quFSj.jpg
http://s8.uploads.ru/t/N6YZG.jpg

16

Яр написал(а):

программисту дано самому решать как и что выглядит


1. Символ диаметра
2. Пустое множество
3. Буква тета. Тета-функция: эллиптическая функция. они цикличны и являются комплексным аналогом обычной эллипсоиды.

Во времена ЕС ЭВМ тексты программ писались на бланках, с которых переносились на перфокарты.
Операторы подготовки данных могли путать букву О и цифру 0. Поэтому цифра в отличие от буквы писалась перечеркнутой.

"машинный ноль". На старых принтерах (50-х годов, да и позднее, вплоть до АЦПУ 70-х годов выпуска)

Но сейчас не используют матричные принтеры (все поломались и заменены на лазерные, или струйные в фотоателье)
(хотя это странно. Матричные экономнее, выше в кассовых аппаратах - они. Наверное из-за шумности.)

Вот ещё в интернете пишут:
"Как–то брал кредит в банке — заставили переписать заявление из–за перечеркнутого нуля. "

Школьные учебники - с неперечёркнутым нулём:
http://www.mathematics-repetition.com/wp-content/uploads/2013/02/5.5.6-3.jpg

и прописи - тоже:
http://razukrashki.com/uploads/raskraski/2014/11/07/3672/propisi-tsifr-ot-0-do-4.jpeg

Отредактировано ВежливыйЛис (2016-12-30 02:46:55)

17

Просто раньше экономили каждое бит-место в памяти, (вынуждены были), вот и использовали один и тот же кегль, но перечёркнутый.  Сейчас же цифры от букв отделяют. Высотой ли шрифта или иными особенностями - не суть важно, но отделяют. А вот в представлении шестнадцатиричного числа буквами - о це да, проблема. Отсутствие пробела между числом и буквой - плохая защита от путаницы...

Отредактировано Сандро (2016-12-30 07:20:23)

18

А,Б,В,Г,Д,Е - это и есть цифры только шестнадцатеричные.  Так что ваше замечание не совсем понятно. Но наверно число 01110Б стоит писать как 01110_Б

19

Павиа написал(а):

это и есть цифры только шестнадцатеричные.

- "абвгде" и "abcde" - это "чар"... ("тскхар" или "char" ли... ) Карочи - ета "буквы" до той поры, покуда не появится "h" или "ш", обуславливающая включение понятия "шестнадцатеричности" приведённого числа и это неудобно малость... )))
123456781ш2ш3ш4ш5ш6ш7ш8ш - тоже неудобно... (ещё хуже)))

Отредактировано Сандро (2016-12-30 09:34:56)

20

Шестнадцатиричные и двоичные константы, как раз на эту тему.

21

Юрий написал(а):

Шестнадцатиричные и двоичные константы, как раз на эту тему.


А что толку? Вот когда Вы с Павиа прийдёте к единому мнению насчет "абвгде" vs "абцдеф", тогда и поговорим.

Считаю что в языке программирования надо писать базу нижним индексом (или специальные символы специально для обозначения системы счисления):

126845812310
01011010102
ГДЕ016

А в дампе не говорить систему счисления на каждой группе символов, а указывать целиком на дамп.

UPD:

Если уметь различать числа и идентификаторы, то можно систему счисления записывать после числа в скобках.
Ведь оператор () для чисел не перегружен.

1268458123(10)
0101101010(2)
ГДЕ0(16)

см. также тему Различия между числами и идентификаторами

Отредактировано ВежливыйЛис (2016-12-31 07:39:56)

22

На фиг вам они сдались? Ни писать ни тем более читать в них неудобно.

23

Это смотря где и для чего неудобно. Вот к примеру надо вам померить глубину стека заполнел стек DEAD BEEF
И сразу видно сколько медведий какой алгоритм убил.
А волшебные константы B000, A000, C000? Они всяко удобнее чем
45096, 40960, 49152.
1000h - 4кб
100000h - 1 мбайт.
Да и алгоритмы с плавучими числами удобно отлаживать.

24

Это смотря где и для чего неудобно.

4-ричными можно вместо 2-ичной и 16-ричной.
И двоичные разряды легко проглядываются и с буквами париться не нужно и набирается легко и не сильно громоздко.

100000h - 1 мбайт.

0-ка не хватает. Без разделителей плохо в любой системе счисления.

Отредактировано MihalNik (2017-01-02 22:26:23)

25

Нолики все наместе. Все 5 шт.

26

Павиа написал(а):

Нолики все наместе. Все 5 шт.

Вот, только путаница с ноликами в 16-чной. И число не равно мере.

Отредактировано MihalNik (2017-01-02 22:29:22)


Вы здесь » Ремесло программиста » Кодирование символов » шестнадцатеричные цифры по-русски