Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

256-ичная система и её запись

Автор Валентин Н, сентября 16, 2012, 20:45

0 Пользователи и 1 гость просматривают эту тему.

qw23

Цитата: Python от сентября 18, 2020, 21:21
С точки зрения компьютерного ввода, большее количество возможных символов оборачивается усложнением средств ввода. Впрочем, проблема решаемая. Для себя я сделал клавиатурную раскладку, в которой с помощью мертвых клавиш можно набрать любой брайлевский символ, задав две 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 - меня коробит...
Не бойтесь ошибаться!
                    Все мы учимся.
                                                       Причём всю жизнь!

Python

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

Python

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

qw23

.
Цитата: Python от сентября 18, 2020, 21:56
12:34:56 (16-чное представление может иметь и такой вид)

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

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

qw23

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

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

Python

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

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

Валентин Н

Для уменьшения размера документов, можно использовать различную кодировку для различных текстов, в короткой записке, сколько разных символов? Можно и 4 бита использовать.
Текстовые редактор мог бы считать символы и кодировать их самостоятельно.
ЗАБАНИЛ ВИКИПЕДИЮ
Нижниь ıндэкс в ҷıсʌах — степень тıсяҷı
Препинания авторские!

qw23

Цитата: Валентин Н от сентября 18, 2020, 22:50
Для уменьшения размера документов, можно использовать различную кодировку для различных текстов, в короткой записке, сколько разных символов? Можно и 4 бита использовать.
Текстовые редактор мог бы считать символы и кодировать их самостоятельно.

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

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

qw23

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

Цитировать
Хотя нет:   #FADCEB означает  ~~   250 : 220 : 235

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

qw23

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

Валентин Н

Цитата: qw23 от сентября 18, 2020, 23:01
... Тем более тексты! Это же - ничто в сравнении с любым мультимедиа-файлом!
Это вопрос принципа  >( :wall:
ЗАБАНИЛ ВИКИПЕДИЮ
Нижниь ıндэкс в ҷıсʌах — степень тıсяҷı
Препинания авторские!

qw23

.
Цитата: Валентин Н от сентября 18, 2020, 23:15
Цитата: qw23 от сентября 18, 2020, 23:01
... Тем более тексты! Это же - ничто в сравнении с любым мультимедиа-файлом!
Это вопрос принципа  >( :wall:

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

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

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

Python

Еще такой вариант представления 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

Python

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

qw23

Цитата: qw23 от сентября 18, 2020, 22:29
Проекты "произносительности" для 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


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

qw23

.
Цитата: Python от сентября 18, 2020, 23:48
У китайцев с алфавитным порядком сложновато. А вот японцам с их двумя упорядоченными канами — да, повезло.

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

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

qw23

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

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


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

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

kemerover

Цитата: qw23 от сентября 18, 2020, 21:44В общем, не знаю как подступиться. От записи #FADCEB - меня коробит...
А что не так? Просто три числа подряд записаны. Не вижу проблемы.

kemerover

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

qw23

Цитата: kemerover от сентября 19, 2020, 05:49
Цитата: qw23 от сентября 18, 2020, 21:44В общем, не знаю как подступиться. От записи #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-ричной системой записи чисел.
Остаётся только придумать выразительное чтение для них.
Не бойтесь ошибаться!
                    Все мы учимся.
                                                       Причём всю жизнь!

Python

Цитата: qw23 от сентября 19, 2020, 00:03
Вижу, что вы понимаете о чём говорите, но что именно пока не понимаю.
Может в виде готовой таблицы 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

Python

Цитата: qw23 от сентября 19, 2020, 10:52
Вот несколько попыток преодолеть "непроизносимость" записанных чисел:

       Числительные в ваших конлангах
       (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

Python

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

Python

Цитата: qw23 от сентября 19, 2020, 10:52
Но, думаю, всё же будущее за 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

Python

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

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
√49:
ALT+S — отправить
ALT+P — предварительный просмотр