RSS

Прокоментируй статью, хотя бы пару слов!

Комментарии:

  • #1avatar

    @ (Дмитрий Липин)

    12.10.2011 17:46:55

    Мм...
    Я - Дмитрий Липин. Круто ) 

  • #2avatar

    Елена Лунная

    13.10.2011 02:21:16

    Рада что вам понравилось, Дмитрий. =)

  • #3avatar

    SelenIT

    27.01.2012 04:48:19

    И тут позволю себе немножко потроллить (конечно, не со злобой, а любя;):

    я слышала такие забавные заблуждения, относительно фундаментальных основ, как:
    ...
    в байте 8 бит потому что 8 — степень двойки
    и чуть дальше
    вероятно компьютеры работают несколько быстрее с мелкими блоками памяти кратными двум
    ;)? А 32-битные процессоры/ОС точно ни при чем? ;)

    И, на мой взгляд, небольшой, но всё же фактический ляпчик:

    Вторая версия Юникода (UCS-2), стала называться UTF-16
    Насколько я в курсе: во-первых, UTF-16 — это расширение бывшего UCS-2, той самой "первой двухбайтной кодовой таблицы на 65k символов", относившейся к Юникоду 1.1 и ниже — именно за счет добавления "суррогатных символов" и еще двух опциональных байт. А во-вторых, что UCS, что UTF ("унив. набор символов" и "формат преобразования Юникода" соотв-но) — не сам Юникод, а лишь конкретные формы его представления.

    А вообще статья увлекательная, спасибо!

  • #4avatar

    Елена Лунная

    27.01.2012 05:42:39

    8=2^3 не очень поняла троллинг.
    Разрядность процессора возможно влияет, но позвольте, а как быть с 16 битными процессорами или 64х битными? =) http://www.ixbt.com/cpu/cpu-bitness.shtml
    Как туда запихнуть 32 битный символ? Будет ли влиять порядок байтов? Как это зависит от Ось или файловой системы? =) Я лично склоняюсь что 4 байта вместо трёх только из-за проблемм кратности (в секторах и т.п.).
    Насчёт уникода даже не знаю что поправить, во многом руководствовалась английской википедией, где основная статья была UCS-2, а сейчас UTF-16, (так же стало и в русской). В русской вики сейчас указаны некоторые различия между ними. Крайне рекомендую всем кому интересно.
    Рада что понравилось.

  • #5avatar

    SelenIT

    27.01.2012 12:44:31

    Троллинг был в "магических" свойствах двойки :). Насчет разрядности - отталкивался в основном от той же википедии (напр. здесь абзац про юникс-подобные системы). Да и просто, на мой взгляд, логично это. С 64-битными системами никаких проблем не вижу (работают же на таких процессорах 32-битные ОС и 80% нынешнего софта:), а 16-битным, боюсь, просто не дано (на то и есть другие представления, влезающие в меньшую разрядность).

    А переименование статей, как я понял, связано с тем, что термин UCS-2 признан устаревшим, сыгравшим свою роль в появлении UTF-16, но не больше того.

  • #6avatar

    Елена Лунная

    27.01.2012 21:25:48

    Ну как не дано-то 16-битным системам работать с 32 битными знаками? А если сделать кодировку 64 битную, с ней 32 битный процессор не справится? Пруф в студию, всем будет интересно =).
    Вы утверждаете если бы кодировка была 24-битной она бы не работала на 32битном процессоре?  В чём отличие от работы с 24 битным цветом? А с 48 восьми битным изображением как 32 битные процессоры работают?
    В абзаце про unix-подобные системы написано только то, что utf8 в них популярней чем utf16 например. До какого-то момента на koi8 работали, и ничего.
    Говоря о том что компьютеры работают быстрее с блоками памяти кратными двум я имела ввиду, что если в секторе N на диске (или в буфере памяти) вам надо прочитать Z-й символ, вам нужно умножать это количество на 3, а это работает в 2 раза медленнее чем умножение на 4 при должной оптимизации. Т.е. вместо 1 побитового сдвига у вас будет сдвиг + сложение.
    Говоря о преимуществе того что в сектор диска попадает кратное количество символов - я имею ввиду то что для чтения одного символа гарантированно нужно прочитать один сектор диска (на 128 или 512 байт, это задаётся в фс), не больше. Нет ситуации когда символ лежит на стыке секторов, а при фрагментации в разных частях диска.

  • #7avatar

    SelenIT

    27.01.2012 22:07:43

    Согласен, про "невозможность" работы с 32-битными символами из-под меньшей разрядности я жестоко "прогнал" :). Но согласитесь, что возможность оперировать каждым символом как целым машинным словом (т.е., например, перекинуть его из одного регистра памяти в другой целиком за один такт процессора) намного удобнее, чем собирать его по частям в каком-то временном буфере, да еще постоянно перепроверяя, целый символ туда попал или только одна-две трети. Я имел в виду вот эту фразу из того абзаца:

    Для работы с отдельными символами строки обычно перекодируются в UCS-4, так что каждому символу соответствует машинное слово.

    Что же до удобств хранения/адресации в памяти, то, на мой взгляд, ваш же пример с 24-битным цветом этой версии слегка противоречит, ведь принципиальную разницу действительно сложно уловить. Так что, когда дорого место, можно, вроде, и дополнительную операцию себе позволить (правда, с цветом всё-таки есть нюанс — эти 24 бита на самом деле 3 однобайтных компонента, к которым часто приходится обращаться по отдельности)...

    Так что при близком рассмотрении "магические свойства" у двойки в компьютерном мире всё-таки есть, и, возможно, 8-битные байты выжили в конкурентной борьбе с "менее круглыми" двоичными значениями не так уж случайно... кто знает? ;)


  • #8avatar

    Елена Лунная

    27.01.2012 22:30:38

    Подождите, вы меня уже путаете (равно как с вопросом о таблицах, на который я щас пытаюсь сделать testcase). Я в статье сказала - что для быстродействия многие текстовые редакторы оперируют с текстом в кодировке utf32 (ucs-4). Согласны?
    wikipedia.org/wiki/Машинное_слово Размер машинного слова в AMD64 - 64 бита, согласны?
    При показе символов на экран процессору вообще всё равно сколько в символе байт, так же как с цветом, согласны?
    При операциях по конвертации из одной кодировки в другую процессор оперирует кусками по 8 бит, а не с 32битным числом, которое кстати зависит от порядка байтов (big-endian , little-endian), согласны?
    В utf8 - трёхбайтные часто встречаются например для китайского алфавита, согласны?
    Так при чём тут вообще регистры процессора и количество байт в символе utf?

  • #9avatar

    SelenIT

    27.01.2012 22:49:00

    Я имел в виду именно удобство внутреннего представления в программе: 1 такт — 1 маш. слово — 1... ну или 2 (в AMD64:) символа Юникода в UCS-4, и никаких хлопот с поиском границ между символами :).

    Насчет вывода на экран, обмена данными и вообще абсолютной нерелевантности процессора, кластеров на диске и прочих низкоуровневых тонкостей к количеству байт произвольного UTF (формата представления) — согласен полностью. Но изначально вопрос был про то, "откуда пошли именно 32 бита". И вот что пишет англ. википедия:

    The original ISO 10646 standard defines a 31-bit encoding form called UCS-4, in which each encoded character in the Universal Character Set (UCS) is represented by a 32-bit friendly code value in the code space of integers between 0 and hexadecimal 7FFFFFFF.

    Because only 17 planes are actually in use, all current code points are between 0 and 0x10FFFF. UTF-32 is a subset of UCS-4 that uses only this range.


    В общем, чем дальше — тем только запутаннее, страньше и чудесатее! Правда, всецело полагаться на википедию тоже нельзя — сам не так давно убирал из русской версии утверждение, что "в HTML теги могут частично перекрываться"..:)

  • #10avatar

    notisster

    17.02.2012 16:29:21

     задом намерёд
    Исправьте пожалуйста.

  • #11avatar

    Елена Лунная

    18.02.2012 01:53:37

    исправила

  • #12

    гость

    19.05.2012 20:02:45

     я ничего не понял =)

  • #13

    26.02.2013 16:47:07

    биты... байты... главное - хвост! (с)

  • #14

    Юлия

    23.05.2013 15:42:33

     Гениально!
    Спасибо Вам - за введение и лаконичный набор ссылок.

  • #15avatar

    Елена Лунная

    23.05.2013 21:08:51

    Рада что вам понравилось.

  • #16

    10.06.2013 20:28:23

    Извините но никак не могу понят почему только 8 бит в байте.............

  • #17avatar

    Елена Лунная

    11.06.2013 00:06:44

    Ввиду обратной совместимости, в байте именно 8 бит. Ведь гораздо проще группировать байты, если хочется получить сущность большего порядка. чем делать байт размером в 9 бит допустим. Причём потребность в этих сущностях была уже давно, поэтому рассматривая многие языки программирования (хоть тот же паскаль или си) - можно заметить тип переменной равный двум байтам - "машинное слово" (word), или  "двойное слово" - (double word, dword) равное 4-м байтам. Именно на алгоритмах группировки байт в сущность и работают т.н. "многобайтные кодировки", которые я рассмотрела в статье. (Ваш Кэп).

  • #18

    аноним

    23.08.2013 22:40:59

     В байте 1024 бита. Дальше не читал. В большинстве вычислительных архитектур байт — это минимальный независимо адресуемый набор данных. В байтах может быть разное количество битов.  В истории компьютерной техники существовали решения с иными размерами байта (например, 6, 32 или 36 битов). А вот в килобайте - 1024 байта. В мегабайте - 1024 килобайта. В гигабайте - 1024 мегабайта. В терабайте - 1024 гигабайта. И так далее.

  • #19avatar

    Елена Лунная

    23.08.2013 22:50:26

    to аноним:
    Ахахаха. Я не читала весь ваш комментарий, но не согласна с ним! =)
    Нет, серьёзно, это самый бесполезный комментарий этого блога.


  • #20

    дизойнёр

    17.01.2014 15:59:56

    хотел написать мол это дико что у нас нынешнее образование наитупейшее, что это дико когда на отделениях информатики народу забивают голову литературой или историей или еще чем то не профильным, а на отделениях физики и математики людей пичкают биологией и угрожают непроставлением зачета если люди не сдадут бег,отжимания и волейбол на физкультуре. И я более чем уверен что это делается спецом и по сговору, что бы у нас в итоге было мало хорошо проф. образованных людей. По другому объяснение таких тупостей еще более несуразно и тупо выглядит чем сговор, потому что по другому это объясняется крайней идиотичностью и тупостью самих преподов и тех кто составлял такие требования, а думать что все эти люди идиоты это глупо. И тут прочитал камент 18 и ответ автора 19.
    Вопрос к автору, мадама, у вас с головой все в порядке? Вы тут просвещаете людей по теме битов байтов и таблиц кодировок и тут же пишете что не согласны с элементарщиной типа что килобайт это 1024 байта и тп.

    Так же вы пишите

    На заре компьютеров байты составляли 4, потом 5, потом 6 бит… Группа из 6 бит может принимать целых 64 значений. Вполне неплохо

    Вы пишите так, как будто составные значения байта как будто бы типа путем прогресса и эволюции вырастали, сначала 4, потом 5, ЧТО В КОРНЕ НЕ ВЕРНО и может привести людей в заблуждение и навести их на такие мысли, что с таким раскладом значения байта могли бы расти до тех самых 1024 байтов в бите ( с чем вы вроде как не согласны , судя по описаниям наблюдаемых вами несуразностей ) и выше, 10001024 байтов в бите например.
    В реальности , как и писали вам кстате в каменте 18, с которым вы почему то не согласны и более того считаете его безполезным, значения битов в байте были разными и задумывались, появлялись и проставлялись в соответствии с принятой кодировкой систем эвм. Про то, как байт дорос до восьми составных битов и что там мало " эволюционного роста с значениями " а лишь только поиск наиболее оптимального кодирования, есть несколько версий и про них вы можете почитать даже в википузии http://ru.wikipedia.org/wiki/%D0%91%D0%B0%D0%B9%D1%82 .

  • #21avatar

    Елена Лунная

    17.01.2014 16:37:36

    Уважаемый дизойнёр,
    Разумеется я-то прочитала комментарий 18, и мой ответ как бы сарказмом пародирует его часть. Не думала что это нужно кому-то объяснять.
    Цитирую начало статьи:

    ... я слышала такие забавные заблуждения, относительно фундаментальных основ, как:
    в байте 1024 бита
    Именно к этой фразе уважаемый аноним придрался, не прочитав дальше вообще статью, и начал меня же учить сколько бит в байте, сколько байт в килобайте и т.п. =) Т.е. его комментарий выглядит как "Статью не читал, но осуждаю". И я ещё раз могу повторить что это был самый бесполезный комментарий моего блога. И поэтому если человек не прочитал мою статью как я могу с ним разговаривать.

    Что касается значений байта, то они вырастали из 4,5,6 бит именно путём прогресса и эволюции в том числе для удовлетворения кодировок эвм, которые и являются одним из видов прогресса и эволюции =). Пожалуйста прочтите мои объяснения до конца прежде чем не согласиться.
    Геном человека состоит из 23 пар хромосом, ввиду эволюции и прогресса, и система такова, что 24-я пара человеку не нужна. Аналогично с битами, Байт состоит из 8 бит — потому что сейчас для программистов это удобно, и 1024 бита в байте не нужно никому - это лишь в несколько раз уменьшит дисковое пространство и вычислительную мощность компьютеров (объяснить почему?). В случаях когда программисту необходимо оперировать группами бит большего размера, например для хранения RSA ключей — 1024,2048 или 4096 бит — программист просто оперирует последовательностью байт нужного размера. Именно поэтому во многих языках есть такие типы данных как Слово (word) или двойное слово (dword) , а такие типы как integer вообще не влезают в пределы одного байта.

    P.S. Ну, и возвращаясь к комментарию анонима, я специально ничего не писала про количество байт в килобайте, т.к. это не влияет на образование. Цель статьи - объяснить разницу между битом и байтом, а также рассказать почему это так на примере кодировок. Количество же байт в килобайте для меня например 1024, а для производителей дисков 1000. Вот Тёма писал в 84 параграфе ру.ководства. Современные SSD например вообще не умеют писать с точностью адресации в один байт - перезаписывают сразу блок.
    P.P.S. Эволюция и прогресс вообще не однозначные понятия, в русском языке 33 буквы, а в китайском 414 слогов (а каждый слог ещё и несколькими иероглифами можно записать) такие дела =).

  • #22

    да так заглянул

    10.04.2014 21:13:39

     молодца, мне понравилось)))



Чтобы оставить комментарий нужно войти или зарегистрироваться (Регистрируйтесь за 5 секунд, без подтверждения email и т.п.).
Либо волшебно используйте ваш логин в Google, Яндекс, рамблер или ЖЖ чтобы войти через Open_ID
Подпишитесь на статьи через RSS

15 самых популярных статей: