Author Topic: 256-ичная система и её запись  (Read 14867 times)

0 Members and 1 Guest are viewing this topic.

Offline qw23

  • Posts: 101
С точки зрения компьютерного ввода, большее количество возможных символов оборачивается усложнением средств ввода. Впрочем, проблема решаемая. Для себя я сделал клавиатурную раскладку, в которой с помощью мертвых клавиш можно набрать любой брайлевский символ, задав две 16-чные цифры (напр., AltGr+1 A = ⢑) — не для записи RGB и не для общения со слепыми, а для собственной реализации игры «Жизнь», где эти символы использованы для компактного отображения игрового поля (вместо того, чтобы каждую клетку показывать отдельным символом).

С точки зрения компактности хранения в памяти компьютера, число в пределах от 0 до 255 помещается в один байт, что соответствует одному символу — однако, часть из этих символов непечатаемая, и еще половина символов зависит от конкретной кодировки. Это если кодировка однобайтная, как windows-1251 или cp866, а не с переменной длиной символа, как utf-8.
В случае же utf-8, есть только 128 символов (включая нуль-символ и непечатаемые), которые можно закодировать одним байтом — все остальные кодируются двумя или более байтами. Т.е., для хранения RGB, например, в трех брайлевских символах нам все равно потребуется 6 байт памяти. Максимальную же компактность в памяти, сохранив при этом читаемость и постоянный размер в любой ASCII-совместимой кодировке (включая UTF-8), можно получить, используя основу 64. Три 256-чных символа легко перекодируются в четыре 64-чных, помещаемых в один байт каждый. Впрочем, с точки зрения читаемости RGB такое представление не очень удобно.


Вопрос технической реализации (уникод, количество расходуемой памяти) и даже способ ввода - дело десятое. Главное для меня: компактность и выразительность (например, чтобы приятно было смотреть на это число, и, естественно, понимать, что стоит за той или иной записью: т.е. понимать, что А меньше Б ровно на единицу...).

В общем, не знаю как подступиться. От записи #FADCEB - меня коробит...
Не бойтесь ошибаться!
                    Все мы учимся.
                                                       Причём всю жизнь!

Offline Python

  • Posts: 46805
  • Gender: Male
  • Aluarium agent
FA:DC:EB читалось бы немного лучше. В принципе, не сложнее, чем 12:34:56 (16-чное представление может иметь и такой вид). Хотя, конечно, 16-чные и 10-чные путаются в мозгу (если 12 — это и 10+2, и 16+2).
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Наверно, одна из проблем 16-чных чисел — отсутствие способа их устного чтения, кроме как перечисляя цифры. Если 1210 — это «двенадцать», то 1216 — «один два» (и все равно хочется сказать «двенадцать»). Вот как назвать 16 простым (желательно, односложным) словом? Для 256 годится слово «байт», а 16 — проблема... А впрочем, если «полбайт»?.. «(Один) полбайт два», «це полбайт дэ», и т.п.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Offline qw23

  • Posts: 101
.
12:34:56 (16-чное представление может иметь и такой вид)

Да, но #FADCEB должно записываться нечто вроде  15.10 : 13.12 : 14.11
А всё это, как вы понимаете, ясности не добавляет...

Проекты "произносительности" для 16-ричной системы счисления - встречаются, но - на мой взгляд  - и они не решают проблему....
Не бойтесь ошибаться!
                    Все мы учимся.
                                                       Причём всю жизнь!

.
Хотя нет:
         #FADCEB означает  ~~   250 : 220 : 235

Или:
         rgb( 250, 220, 235 )  =  rgba( 250, 220, 235, 1 )
Не бойтесь ошибаться!
                    Все мы учимся.
                                                       Причём всю жизнь!

Offline Python

  • Posts: 46805
  • Gender: Male
  • Aluarium agent
Запомнить оригинальный алфавит из 256 цифр будет не проще (впрочем, если скомбинировать цифры, латинские буквы, греческие, кириллицу (включая исторические буквы), еще какой-то широко известный алфавит — естественно,  включив строчные и прописные, сделав для них шрифт, где буквы разных азбук будут выглядеть по-разному, продумав, как это будет читаться — то задача изучения такого набора цифр сведется к запоминанию, в каком порядке идут уже знакомые алфавиты. Ну и немного арифметики для ориентировки — сколько будет аз плюс Бета, и т.п.)

Значит, остаются вариации на тему других систем (двоичной, 8-чной, 10-чной, 16-чной)...
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Online Валентин Н

  • Posts: 44749
  • Gender: Male
Для уменьшения размера документов, можно использовать различную кодировку для различных текстов, в короткой записке, сколько разных символов? Можно и 4 бита использовать.
Текстовые редактор мог бы считать символы и кодировать их самостоятельно.
Нижниь ıндэкс в ҷıсʌах — степень тıсяҷı.
Препинания авторские!

Offline qw23

  • Posts: 101
Для уменьшения размера документов, можно использовать различную кодировку для различных текстов, в короткой записке, сколько разных символов? Можно и 4 бита использовать.
Текстовые редактор мог бы считать символы и кодировать их самостоятельно.

За техническую сторону вопроса и количество памяти я не волнуюсь - с этим компьютер и без нас справится. И память нынче не столь дорого стоит....
... Тем более тексты! Это же - ничто в сравнении с любым мультимедиа-файлом!

Так что эта сторона вопроса меня меньше всего заботит.
Не бойтесь ошибаться!
                    Все мы учимся.
                                                       Причём всю жизнь!

Quote
#FADCEB  должно записываться нечто вроде  15.10 : 13.12 : 14.11

Quote
Хотя нет:   #FADCEB означает  ~~   250 : 220 : 235

Вот вам сходу пример того, как даже сама запись чисел сбивает с толка!..
Не бойтесь ошибаться!
                    Все мы учимся.
                                                       Причём всю жизнь!

<...> еще какой-то широко известный алфавит <...>

Повезло же китайцам!..
Не бойтесь ошибаться!
                    Все мы учимся.
                                                       Причём всю жизнь!

Online Валентин Н

  • Posts: 44749
  • Gender: Male
... Тем более тексты! Это же - ничто в сравнении с любым мультимедиа-файлом!
Это вопрос принципа  >( :wall:
Нижниь ıндэкс в ҷıсʌах — степень тıсяҷı.
Препинания авторские!

Offline qw23

  • Posts: 101
.
... Тем более тексты! Это же - ничто в сравнении с любым мультимедиа-файлом!
Это вопрос принципа  >( :wall:

Хорошо, Валентин, если Вам это удастся, буду благодарен не только я и китайцы :yes:

Боюсь, только если и я пойду этим путём (или другим словами биться буду и дальше биться о стену), то до практичного и удобного применения так и не дойду!

... А принципы - оно конечно - хорошо!
Не бойтесь ошибаться!
                    Все мы учимся.
                                                       Причём всю жизнь!

Offline Python

  • Posts: 46805
  • Gender: Male
  • Aluarium agent
Еще такой вариант представления 256-чного разряда: разбиваем его на 8-чный старший и 32-чный младший подразряд (или наоборот — надо разобраться, какой вариант удобнее). 8-чный кодируем цифрой от 0 до 7. Для 32-чного подойдут буквы современных кириллиц (украинской, русской, белорусской или македонской — всех, где есть минимум 31 буква, поэтому болгарская и сербская не подойдут). При этом, поскольку 32-чный подразряд всегда соседствует с 8-чным, 32-чный ноль можно обозначить отсутствием буквы, А=1, Б=2, В=3, и т.д. Если в алфавите больше букв, чем требуется, какие-то из них нужно выбросить (например, Ъ и Ь с неудобочитаемыми названиями).
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

<...> еще какой-то широко известный алфавит <...>
Повезло же китайцам!..
У китайцев с алфавитным порядком сложновато. А вот японцам с их двумя упорядоченными канами — да, повезло.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Offline qw23

  • Posts: 101
Проекты "произносительности" для 16-ричной системы счисления - встречаются, но - на мой взгляд  - и они не решают проблему....
Вот на вскидку:

(wiki/en) Hexadecimal#Verbal_and_digital_representations
https://www.cyberforum.ru/blogs/435792/blog2172.html
https://www.linux.org.ru/forum/talks/14562438
http://popoff.donetsk.ua/text/donntu/odm/theory/enumeration/faq.html


Мне вообще кажется, что писать свой конланг в стол это, конечно, хорошо и дело каждого, но более ценно для всех как-то объединиться опытным конлангерам и создать удобное средство по работе с числами. Была бы так сказать практическая польза для всех.
Не бойтесь ошибаться!
                    Все мы учимся.
                                                       Причём всю жизнь!

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

Про каны не в курсе. Может быть объясните или укажите куда копать.

Не бойтесь ошибаться!
                    Все мы учимся.
                                                       Причём всю жизнь!

.
Еще такой вариант представления 256-чного разряда: разбиваем его на 8-чный старший и 32-чный младший подразряд (или наоборот — надо разобраться, какой вариант удобнее). 8-чный кодируем цифрой от 0 до 7. Для 32-чного подойдут буквы современных кириллиц (украинской, русской, белорусской или македонской — всех, где есть минимум 31 буква, поэтому болгарская и сербская не подойдут). При этом, поскольку 32-чный подразряд всегда соседствует с 8-чным, 32-чный ноль можно обозначить отсутствием буквы, А=1, Б=2, В=3, и т.д. Если в алфавите больше букв, чем требуется, какие-то из них нужно выбросить (например, Ъ и Ь с неудобочитаемыми названиями).

Вижу, что вы понимаете о чём говорите, но что именно пока не понимаю.
Может в виде готовой таблицы 1...256 станет понятней...


И опять же вопрос "произносительности" не снимается!..   
ФЬБЛООУЦЙГНШ - это же - понимаете - не вариант при таких условиях!

Закодировать - да, можно, а вот удобство проктического человеческого использования крайне сомнительно!
Не бойтесь ошибаться!
                    Все мы учимся.
                                                       Причём всю жизнь!

Offline kemerover

  • Posts: 2091
  • Gender: Male
В общем, не знаю как подступиться. От записи #FADCEB - меня коробит...
А что не так? Просто три числа подряд записаны. Не вижу проблемы.

Наверно, одна из проблем 16-чных чисел — отсутствие способа их устного чтения, кроме как перечисляя цифры. Если 1210 — это «двенадцать», то 1216 — «один два» (и все равно хочется сказать «двенадцать»). Вот как назвать 16 простым (желательно, односложным) словом? Для 256 годится слово «байт», а 16 — проблема... А впрочем, если «полбайт»?.. «(Один) полбайт два», «це полбайт дэ», и т.п.
1216 это восемнадцать независимо от способа записи ;)

Offline qw23

  • Posts: 101
В общем, не знаю как подступиться. От записи #FADCEB - меня коробит...
А что не так? Просто три числа подряд записаны. Не вижу проблемы.
Якобы ради краткости мы часто записываем числа в CSS 16-ричным кодом.
По-моему, 6 цифр - это трудно назвать краткостью. Если уж программисты - так повелось - любят степени числа 2, то гораздо лучше перейти на 32-ричную систему или даже 64-ричную. К тому же на уровне битовости операционной системы и программ этот момент уже успешно преодолели!

В 10-ой системе - мы (относительно) легко можем понять, каким будет следующие или предыдущее число, а CSS нам как будто специально вставляют палки в колёса. В практическом плане - мы вынуждены выбирать цвет исключительно визуально.

И главное, как я писал уже выше: числа в 16-ричной системе не только не кратки, но и к тому же они непроизносимы!

Вот несколько попыток преодолеть "непроизносимость" записанных чисел:

       Числительные в ваших конлангах
       (wiki/en) Hexadecimal#Verbal_and_digital_representations
       https://www.cyberforum.ru/blogs/435792/blog2172.html

Но, думаю, всё же будущее за 64-ричной системой записи чисел.
Остаётся только придумать выразительное чтение для них.
Не бойтесь ошибаться!
                    Все мы учимся.
                                                       Причём всю жизнь!

Offline Python

  • Posts: 46805
  • Gender: Male
  • Aluarium agent
Вижу, что вы понимаете о чём говорите, но что именно пока не понимаю.
Может в виде готовой таблицы 1...256 станет понятней...
Например, так (всю таблицу приводить не буду, только примеры):
0 = 0
1 = 0а
2 = 0б
31 = 0я
32 = 1
33 = 1а
34 = 1б
63 = 1я
64 = 2
96 = 3
128 = 4
160 = 5
192 = 6
224 = 7
255 = 7я
256 = 0а0
257 = 0а0а
65535 = 7я7я
65536 = 0а00
65537 = 0а00а

Т.е., каждый 256-чный разряд делим на 32 с остатком, результат деления записываем цифрой (от 0 до 7), остаток — буквой сокращенного алфавита (или пропускаем, если в остатке ноль).
Сокращенный алфавит может выглядеть так:
на основе русского:       абвг деёж зийк лмно прст уфхц чшщы эюя
на основе украинского: абвг деєж зиії йклм нопр стуф хцчш щюя
(где а=1, б=2, ..., ю=30, я=31).
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Вот несколько попыток преодолеть "непроизносимость" записанных чисел:

       Числительные в ваших конлангах
       (wiki/en) Hexadecimal#Verbal_and_digital_representations
       https://www.cyberforum.ru/blogs/435792/blog2172.html
Последний можно немного доделать, добавив однозначности (чтобы 16-чные числительные не путались с 10-чными):
1016 — шецать (сокр. от ше(стнад)цать),
заменяем все -надцать, -дцать и -десят на -нашцать, -шцать и -шецат.
Таким образом, 1216 следует читать как «двенашцать», 2116 — «двашцать один», AB16 — «ашецат бэ».

Далее, сотни и тысячи для 16-чной системы менее актуальны, чем деление на байты, двойные байты (слова), и т.д. Взяв за основу ассемблерные типы, можно сделать так:
10016 — байт
1000016 = 100162 — ворд или слово
10000000016 = 100164 — дворд
1000000000000000016 = 100168 — кворд или чеворд
При этом, слово внутри делится на байты, дворд — на слова, чеворд — на дворды.
Напр., 1234ABCD16 — «двенашцать байт тришцать четыре слова ашецат бэ байт цешецат дэ».
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Р.Ѕ. 16-чные «сорок» и «девяносто» заменить на «четырешецат» и «девятьшецат».
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Но, думаю, всё же будущее за 64-ричной системой записи чисел.
Остаётся только придумать выразительное чтение для них.
64-чный разряд разделяется на два 8-чных, которые записываются обычными цифрами. К которым можно применить тот же подход:
108 — осемь (немного изменим название, чтобы отличать от десятичного);
118...178 — одиннаосмь…семнаосмь;
208, 308 — дваосмь, триосмь
408…708 — четыреосем…семьосем.

8-чная система технически реализуется немного проще, чем 16-чная, и определенное время она пользовалась популярностью, но господство 8-разрядных байтов дало преимущество 16-чной: если два 16-чных разряда заполняют байт полностью, то из трех 8-чных один использует неполный диапазон — что неудобно, если из этих байт состоят числа побольше. Будь общепринятый размер байта 6 или 9 двоичных разрядов (т.е., число от 0 до 63 или до 511), 8-чная система была бы более жизнеспособной.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Да, как назвать 1008 = 6410 по-восьмеричному?
Символ с ASCII-кодом 64 — '@' (известный как собака, коммерческое а, at, эт). Если взять одно из его названий:
1008 — эт или собака,
2008 — дваэта или двусобак, и т.д.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

 

With Quick-Reply you can write a post when viewing a topic without loading a new page. You can still use bulletin board code and smileys as you would in a normal post.

Note: this post will not display until it's been approved by a moderator.
Name: Email:
Verification:
√49 Напишите ответ строчными буквами:
«Сто одёжек, все без застёжек» — что это?: