LINUX.ORG.RU
ФорумTalks

Префикс десятичной системы счисления

 


0

3

Чтобы записать число в шестнадцатеричной системе счисления, используется префикс 0x, в восьмеричной — 0o, в двоичной — 0b. А есть ли префикс для десятичной системы, если это явно нужно указать? Например, python на запись типа 0d5 напишет SyntaxError: invalid decimal literal.


Какой-такой префикс?

$: echo "$((10#55))"
55

$: echo "$((8#55))"
45

$: echo "$((16#55))"
85

$: echo "$((2#110111))"
55

$: echo "$((36#EBABABA))"
31157403382
ALiEN175
()

Отсутствие префикса обозначает десятичную систему

KivApple ★★★★★
()

Префикс - это не что-то абсолютное, а вопрос имплементации конкретного языка программирования. 0x идёт из языка Си, а где-то ещё $ используется. 0o, 0b по аналогии с 0x, и ещё есть варианты с постфиксами 0FFh например, при этом первой цифрой должна быть 0-9, чтобы отличить от идентификаторов.

Возможно, где-то поддерживается 0d123 или 123d для десятичной системы, но это надо смотреть конкретные языки.

Xenius ★★★★★
()

в восьмеричной — 0o

А просто «0» тоже остался как был? Какой дегенерат до такого додумался вообще?

Кстати, а префикс 0b уже стандарт, или до сих пор компиляторозависимый?

quwy
()
Последнее исправление: quwy (всего исправлений: 1)
Ответ на: комментарий от quwy

Кстати, а префикс 0b уже стандарт

В C-2x да.

akk ★★★★★
()
Ответ на: комментарий от firkax

Все префиксы компиляторозависимые, стандартов нет.

А могли бы убрать все префиксы, заменив их стандартными нижними индексами 12345₁₀, 177777₈, ABCDEF₁₆, …

quickquest ★★★★★
()

А зачем в синтаксисе поддержка любых оснований? Число не зависит от его представления.

Двоичная нотация полезна биты щёлкать. Шестнадцатеричная - байты двойками в уме считать. Восьмеричная - уже экзотика за пределами прав на файлы в UNIX.

vsnb
()
Последнее исправление: vsnb (всего исправлений: 1)
Ответ на: комментарий от quickquest

Продукт, сделанный его автором, очевидно зависит от его автора. Является, так сказать, материальным выражением его мыслей, и тут ничего не поделать и не надо делать. А вот дополнительных зависимостей от каких-то левых людей желательно избежать.

Ну и если в более практическом аспекте: считаю, что синтаксис любого языка программирования должен полностью укладываться в 7-битную кодировку. И имена идентификаторов в его системной библиотеке, как минимум один из алиасов иметь в ней же.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от vsnb

А зачем в синтаксисе поддержка любых оснований? Число не зависит от его представления.

Для читабельности кода. Например, для битовых масок десятичное основание неудобно. Что за число 24576? А в хексах это 0x6000 – установлены два бита в старшей тетраде.

akk ★★★★★
()
Ответ на: комментарий от next_time

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

alysnix ★★★
()
Последнее исправление: alysnix (всего исправлений: 1)
Ответ на: комментарий от quickquest

Ага! А ещё добавить всякие ≠≤≥→≡∞.

Tanger ★★★★★
()

i̵̡̧̡̢̢̨̢̨̛̠̱̬̱̺̝̠̩͎̻͈̰͖͕̤̜̬͍̤͙̖̻̼̩̲͈͇̺̣̣̲͙̫̥̝̺͔̱̻̖̗̯̯̱͇͉̩̠̭̼̥̙̐̈́͗̈́̍̇̌̈͑̔̈́͊̐̓̏̑̀͐͌͑̑̈́͛́́̂̓̀̒̍̈̋̊̍̌͆̇͗̉́̃̓́͘͘ņ̴̢̨͕̪̰͕͚̮̟̮̭̥̗̘̰̟̱̿̒̄͊͆̌̒̃̈́̒̎̆̂̅͂̀̆̓́̋̾̀̂̄̃̈́̃̐͜͝͠͝͝͝t̵̮͖́̇̾̾͛̀͐̽̍̀͋̊́́̓̓́̃̐͋͋̎̋͋̃̇͋̀̄̾͊̓̎͌͌́̓̀̆̚͘̕͠͝ ̷̡̨̹̦̳̥̻̱̫̟̗͖͚̘͇̦̩͓͈͉͎̦̠̞͈̬̱̫̲͔̝̻̼̯̟̰̙͈̮̖̗̘̤̀́͑̔͐́̍͌̿̈̽͘͜͜͝͝͝ͅͅṃ̸̛̛̆̃̊̍͗̃͑̔̾̉̇̾͊͒̐́̎̇̈́͊̃͆͑͂̈̾̏̒͑͗͒͌̔͆̎͗̏̌̉̒̌̓̽͗̾̈́̍̕͘͝͝͝a̷̢̧̧̨̧̧̧̛̯̯̟̖̖̤̠̭̞̮̦̤̟̫͍͍̠̜͕̩̫̝̝̰͎͕͚̫̼̻͉͙̦̘̣̬̳̻̹͓̜̖̼̮͕̮̹̺͓̹̼͖̳̞̅͜͜ͅͅͅĩ̸̧̧̱̙̞̙̩̥̪̹̫̽̋͗̀̀̍̊̃͑̾̋͂͗̒̋̐̃͆̈̄̈̾̇̌͛̇̍̒͘͘̚͝͠͠ņ̴̧̧̢̨̨̛̛̗̳͙̣̹͖̩̤̠͉̼͔̠͚̥̭̙̥̞̪͓̦̞̱͓͕͚̤̩͉̤̜̰̭͍̹̻̹̼͖͚̳̖͉͚̘̲̼͔̓̅͑̀͐̆̈́̋̒̑̊͗̾̀̽̽͒͑͑̒̾͗̈́͘͘͘͜͠͠ͅ(̵̨̨̢̨̪͔̩̙̝̫͎̖̱͚̤̗̱̦̣͙̮̝̗̞̬͓̻̬̩̪̲͎̭͔̫̞̻̺̹͍̱̞̻̩̑̓̈͆̄̀̓̽͆͐̓̍̏̒̂̀̓̀̿͌͐͊͊̎̋̑̀͛͋̎̋́̀̌̎͛̒͐̌̐̔̐́͌̃͆̋̒̉̅̐̄̒́̚͘̚̕͠͝͝͝͠͝͝)̵̡̧̜͈̣̳͎͖͔̪̝̯̳̥̱̼͕̺͍͇̻̠̗͈̠̬͚̟̯̜̜̯̱̲̖̙̼̹̬͇̼̇̈̊͒̔̈͒̓̊̽̏̆̉̀̏͌̉̄̓̚̕͜͜͜͝͠͝͝ͅͅͅ

Merionet
()
Ответ на: комментарий от next_time

А восьмеричное представление для чего?

Было удобно для человеков в прошлом веке, когда ЭВМ были 16 разрядными, нужные 2 триплета запоминали как телефонный номер.

quickquest ★★★★★
()
Ответ на: комментарий от firkax

А вот дополнительных зависимостей от каких-то левых людей желательно избежать.

Юникод – давно уже стандарт. Как и ASCII.

Ну и если в более практическом аспекте: считаю, что синтаксис любого языка программирования должен полностью укладываться в 7-битную кодировку.

Зачем? На Agda с её юникодным синтаксисом писать одно удовольствие вот.

hateyoufeel ★★★★★
()
Ответ на: комментарий от hateyoufeel

ASCII был принят раз и навсегда, а у юникода постоянно какие-то новые версии, придумываемые какими-то людьми, и необходимость мутных библиотек для работы с ним. Юникод невозможно использовать в режиме «1 байт на символ» - даже без мутных библиотек это проблема. Ну и в конце концов, он не переносим. Про ASCII можно быть уверенным, что он покажется на любом устройстве одинаково, Юникод же не сможет показаться даже в физической консоли моего домашнего сервера (будут какие-то закорючки из дефолтной VGA-кодировки), не говоря уже про что-то более экзотическое (и даже если железка поддерживает сам юникод, в ней может не оказаться нужных букв в шрифте, потому что юникодные шрифты никто с 100% покрытием не делает). Место юникода - «для бытового применения», в крайнем случае им можно набирать идентификаторы (которые парсятся как набор байт, т.е. компилятору будет пофиг юникод там или что ещё), но никак не для системно-существенных дел.

firkax ★★★★★
()
Ответ на: комментарий от firkax

ASCII был принят раз и навсегда,

ичо

у юникода постоянно какие-то новые версии

Они обратно-совместимы все. Новые версии юникода поддерживают старый текст.

Юникод невозможно использовать в режиме «1 байт на символ» - даже без мутных библиотек это проблема.

Ну, да, букв в мире больше 255.

Ну и в конце концов, он не переносим.

Кодировка, используемая на вообще всех платформах, не переносима. Интересное мнение!

hateyoufeel ★★★★★
()
Ответ на: комментарий от hateyoufeel

Ну, да, букв в мире больше 255.

И что? Незачем замусоривать этими «всеми буквами» синтаксис. Для написания каких-то гуманитарных текстов пусть что угодно используют, но мы не про них. 7-битной кодировки прекрасно хватает для кодинга (и символов там вовсе не 128, а 95).

Кодировка, используемая на вообще всех платформах

Наглое 4.2

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

7-битной кодировки прекрасно хватает для кодинга

И у программы будет только интерфейс на английском)

goingUp ★★★★★
()
Ответ на: комментарий от goingUp

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

firkax ★★★★★
()
Ответ на: комментарий от firkax

7-битной кодировки прекрасно хватает для кодинга (и символов там вовсе не 128, а 95).

См. Agda и другие штуки. Там реально юникод используется. Правда, не столько в синтаксисе. Синтаксис агды вообще минимален.

Наглое 4.2

А можно пример современной платформы, где нет юникода?

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 2)
Ответ на: комментарий от hateyoufeel

Agda

Я первый раз слышу про эту штуку. Судя по описанию, это не язык программирования в обычном смысле, а скорее какая-то прога для математиков.

А можно пример современной платформы, где нет юникода?

x86 видеокарты в текстовом режиме.

firkax ★★★★★
()
Ответ на: комментарий от hateyoufeel

А можно пример современной платформы, где нет юникода?

А вот ещё прям сейчас у кого-то юникодопроблемы в Линуксе.

LibreOffice не открывает и не сохраняет файлы с кириллицей.

Я понимаю, что проблема там в ошибочном конфиге чего-то, но сути это не меняет: ASCII работает гарантированно и вне зависимости от всяческих обстоятельств.

firkax ★★★★★
()
Ответ на: комментарий от Merionet

У меня одного это сообщение выглядит максимально странно?

Какая-то «матрица» залезающая на другие сообщения.

unDEFER ★★★★★
()
Ответ на: комментарий от firkax

Я первый раз слышу про эту штуку. Судя по описанию, это не язык программирования в обычном смысле, а скорее какая-то прога для математиков.

Это полноценный язык программирования.

А можно пример современной платформы, где нет юникода?

x86 видеокарты в текстовом режиме.

Я попросил современную платформу. Ты притащил легаси режим из 80х, который уже выпиливают отовсюду. Молодец! Ты в нём код-то сам пишешь?

hateyoufeel ★★★★★
()
Ответ на: комментарий от hateyoufeel

Если это язык программирования, и не эзотерический, то приведи пример софта, на нём написанного.

Видеокарта это не легаси. Да, иногда пишу код в 80х25 консоли. За последний год такое точно было.

firkax ★★★★★
()
Ответ на: комментарий от firkax

ASCII был принят раз и навсегда, а у юникода постоянно какие-то новые версии

факт того, что в ASCII последние изменения были приняты за десятилетия до того момента как ты впервые с ним столкнулся, не делает твой высер сколь-нибудь правдивым.

это означает лишь твое очень поверхностное знакомство с темой.

иначе бы ты мог осилить пару предложений хотя бы из википедии:

Work on the ASCII standard began in May 1961
The first edition of the standard was published in 1963,[5][6] underwent a major revision during 1967,[7][8] and experienced its most recent update during 1986.[9]

т.е. оно изменялось (сам текст стандарта) на протяжении четверти века.

срочно встань на колени и извинись перед юникодом! тупую таблицу из сотни символов делали более четверти века!

n_play
()
Ответ на: комментарий от firkax

Если это язык программирования, и не эзотерический, то приведи пример софта, на нём написанного.

На нём пруфы пишут и часть кода генерят. Во впопенсорце этого почти нет, но это мало о чём говорит.

Видеокарта это не легаси

VGA Text Mode с его сраными двумя шрифтами по 256 символов – легаси.

Да, иногда пишу код в 80х25 консоли. За последний год такое точно было.

Вот прямо в VGA text mode?

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от n_play

Из википедии же

Следующая редакция ASCII (USAS X3.4—1967) была опубликована 5 июля 1967 года и определила окончательную кодовую таблицу

Ладно, там было 1961-1967 и три разных версии, но по факту это были две бетки (все это 6 лет они решали чем заполнить 60-7F - строчными буквами или управляющими кодами) и финальный релиз. Да, наверно с тех пор у фортран-кодеров привычка писать всё только заглавными.

Но это всё дела глубокой древности, когда ASCII не особо и использовался - IBM предпочитало EBCDIC.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от hateyoufeel

Вот прямо в VGA text mode?

Да, именно так. И с всего одним шрифтом по факту 128 символов т.к. верхняя половина кодовой таблицы какая-то дефолтная нерусифицированная и соответственно непригодна к использованию. Ну, это было не сильно много времени, думаю около часа или двух в сумме.

А ещё вот это целиком написано именно в vga text mode, правда возможно там 80х50 было местами, ну и русификатор (cp866) таки есть. Но там последний патч наверно года три назад был.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 3)
Ответ на: комментарий от firkax

Да, именно так. И с всего одним шрифтом по факту 128 символов т.к. верхняя половина кодовой таблицы какая-то дефолтная нерусифицированная и соответственно непригодна к использованию. Ну, это было не сильно много времени, думаю около часа или двух в сумме.

Зачем ты себя так ненавидишь-то?

Ладно, text mode всё равно выпиливают из новых карт. Так что это скоро закончится и юникод будет везде.

hateyoufeel ★★★★★
()
Ответ на: комментарий от hateyoufeel

Ну, фрибсд консольный драйвер syscons работает именно в этом режиме по умолчанию. Ему на замену уже сделали vt, в котором есть твой любимый юникод и который дефолт начиная с freebsd 10 то ли 11. Но когда я на неё обновился и столкнулся с этим драйвером, обнаружил что он работает неудовлетворительно и прописал в loader.conf использование старого, и эта настройка там так и осталась до сих пор. Возможно, в новых фрибсд vt уже довели до ума, я не проверял.

Да, это было неудобно, учитывая что редактируемый код без без 80-колоночного ограничения, но нужно не часто.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Ну, фрибсд консольный драйвер syscons работает именно в этом режиме по умолчанию. Ему на замену уже сделали vt, в котором есть твой любимый юникод и который дефолт начиная с freebsd 10 то ли 11.

FreeBSD 11 вышла почти 10 лет назад.

hateyoufeel ★★★★★
()
Ответ на: комментарий от quickquest

убрать все префиксы, заменив их стандартными нижними индексами 12345₁₀

Как это предлагается набирать с обычной клавиатуры? В нотации TeX что ли?

watchcat382
()
Ответ на: комментарий от hateyoufeel

Зачем?

Для однозначности понимания. В программировании ноль перечеркивать не просто так стали. А в юникоде внешне очень похожих,а то и вовсе одинаковых символов очень дофига. Хватает того что у нас и так на клавиатуре «С» русское и «C» латинское на одной кнопке и «Y»/«Н» тоже одна кнопка. В одной соседней стране еще и с кнопкой «N»/«Т» так же проблема потому что в их языке «да»==«так».

watchcat382
()
Ответ на: комментарий от watchcat382

Как это предлагается набирать с обычной клавиатуры?

В обычной клавиатуре можно сотворить кучу раскладок с любыми символами. Например, в смартфонах народ уже к этому привык.

quickquest ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)