![]() |
|
![]() ![]() ![]() |
|
Dexter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1562 Регистрация: 2.7.2002 Где: Москва, Бирюлево Репутация: нет Всего: 4 |
(Вопрос может показаться очень тупым и примитивным)
Я не очень много знаю по этому вопрсу так что исправьте если я че напортачил. Так вот: я так понимаю, что любой символ кодируется восемью нулями и единицами (всего символов 256), и вся "матрица" ANSI представляет собой (как бы) массив из 256 элементов. Каждый элемент - символ. Так вот (я че-то увлекся) почему при создании компьютерных технологий (или как там это называется) закодировали каждый симво именно 8 нулями и единицами, ведь если их было бы больше то и символов могло быть больше. (вроде все). Еще раз повторяю не судите строго, я в этом хреново разбираюсь ![]() ![]() ![]() И если можно кинте адресок где можно про это почитать ![]() -------------------- The only thing you really know about me is... ...that's all you'll ever know |
|||
|
||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: нет Всего: 207 |
Вся матрица это массив из 8 битов, количество комбинаций 8 элементов, каждый из которых может иметь 2 значения (0, 1) и даёт 256 возможных вариантов:
0000 0000 - 0 0000 0001 - 1 0000 0010 - 2 0000 0011 - 3 0000 0100 - 4 0000 0101 - 5 0000 0110 - 6 0000 0111 - 7 0000 1000 - 8 0000 1001 - 9 0000 1010 - 10 0000 1011 - 11 0000 1100 - 12 0000 1101 - 13 0000 1110 - 14 0000 1111 - 15 и т.д. -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
December |
|
|||
![]() Antitheorist ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: нет Всего: 57 |
Во имя экономии памяти и оптимизации скорости обработки избрали именно 8-и кратную систему. Другие основания тормозили бы как вывод на экран, так и всё остальное.
|
|||
|
||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: нет Всего: 207 |
Не так чтоб сразу, я работал на системах с основаниями 5, 6, 7 - увеличение основания происходило с увеличением вычислительной мощности. А сейчас активно проталкиваются Unicode как стандарт, которые есть суть 16 битная система
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
Dexter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1562 Регистрация: 2.7.2002 Где: Москва, Бирюлево Репутация: нет Всего: 4 |
Че то я с трудом въезжаю можно как нибудь попроще ![]() ![]() ![]() -------------------- The only thing you really know about me is... ...that's all you'll ever know |
|||
|
||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: нет Всего: 207 |
Представь себе 2 шахматные клетки. На них должно стоять по 1й шашке, сколько возможно комбинаций? Очевидно 4:
1) чёрная | чёрная 2) чёрная | белая 3) белая | чёрная 4) белая | белая Это понятно? Другими словами двумя шахматными клетками можно закодировать 4 варианта значений. Например у меня перед кабинетом стоит шахматный столик, и я условился с сотрудниками, что перед уходом из кабинета я буду оставлять там шашки, и по ним можно определить куда я ушёл: Если на столе стоят: чёрная | чёрная - то я ушёл в библиотеку чёрная | белая - то я ушел в столовую белая | чёрная - то я ушел домой белая | белая - то я пью кофе в соседней лаборатории Таким образом у меня закодировано 4 разных варианта ("ушёл в библиотеку","ушел в столовую", "то я ушел домой", "пью кофе в соседней лаборатории") при помощи 2 клеток и шашек которые могут быть либо чёрными либо белыми. Теперь обозначим цвет цифрами: 0 - чёрный 1 - белый Таким образом можно обозначить что: 0 | 0 - то я ушёл в библиотеку 0 | 1 - то я ушел в столовую 1 | 0 - то я ушел домой 1 | 1 - то я пью кофе в соседней лаборатории Естественно, что если использовать больше клеток то можно закодировать большее число вариантов. Например если взять 3 клетки то можно закодировать 8 вариантов: чёрная | чёрная | чёрная чёрная | чёрная | белая чёрная | белая | чёрная чёрная | белая | белая белая | чёрная | чёрная белая | чёрная | белая белая | белая | чёрная белая | белая | белая Или в цифровом выражении: 0 | 0 | 0 0 | 0 | 1 0 | 1 | 0 0 | 1 | 1 1 | 0 | 0 1 | 0 | 1 1 | 1 | 0 1 | 1 | 1 Идя дальше 8 шахматных клеток могут закодировать 256 возможных вариантов. Теперь чуть чуть изменим терминологию: 1 шахматную клетку назовём бит - очевидно что она может передать только 2 варианта ("чёрный/белый" или "0/1" или "True/False" или "Yes/No") 8 шахматных клеток которые могут передать (кодировать) 256 вариантов значений назовём байтом. Каждый возможный вариант раскладки шашек по 8 ячейкам у нас будет кодировать букву, цифру или спец.символ, этот набор кодируемых значков обзовём ASCII или ANSI таблицей. -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
Dexter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1562 Регистрация: 2.7.2002 Где: Москва, Бирюлево Репутация: нет Всего: 4 |
Понятно.
А в самом начале я правильно написал? -------------------- The only thing you really know about me is... ...that's all you'll ever know |
|||
|
||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: нет Всего: 207 |
Нет, вот здесь неправильно. Эта матрица - это массив из 8 элементов и никак иначе -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
Dexter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1562 Регистрация: 2.7.2002 Где: Москва, Бирюлево Репутация: нет Всего: 4 |
но всего ведь элементов 256 и каждый с уникальным порядком 1 и 0.
И где в Инете можно почитать про это -------------------- The only thing you really know about me is... ...that's all you'll ever know |
|||
|
||||
suborg |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 29.4.2002 Где: Москва Репутация: нет Всего: нет |
упрощаем понимание: в двоичной системе если каждую цифру числа умножить на нужную степень двойки, и результаты сложить, получится десятичное число. Проще:
умножать надо на (по порядку слева направо) 128, 64,32,16,8,4,2,1. Еще проще: 0101 в двоичном коде будет 0*8 + 1*4 + 0*2 + 1*1, получится 5, значит двоичное число 0101 означает нашу пятёрку. Теперь усложним - двоичное число 00000101 если так же домножить, тоже получится пятёрка, теперь возьмём таблицу символов ASCII и увидем, что под номером пять там находится такой-то символ (не помню какой ![]() Графический адаптер например при работе в текстовом режиме, считывает из памяти байт для каждого знакоместа на экране, и соответственно значению этого байта вырисовывает какой ни будь символ на экране, номер символа в таблице опять же определяется значением этого байта, ну, а каждому номеру символа в таблице приписано своё начертание - это уже шрифт. Фу, кажется опять усложнять начал ![]() |
|||
|
||||
Dexter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1562 Регистрация: 2.7.2002 Где: Москва, Бирюлево Репутация: нет Всего: 4 |
Хотя я все понял, я чувствую себя полным ламером
![]() ![]() ![]() -------------------- The only thing you really know about me is... ...that's all you'll ever know |
|||
|
||||
cosmic |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 28.9.2002 Репутация: нет Всего: нет |
Dexter, зачем тебе больше? не хватает 256? ![]() в принципе, (ради пущего съезжания крыши ![]() (щас вые#####сь, "...сколько разрядов в минимально-адресуемой единице памяти на конкретной машине" ![]() правда я слышал только об алгоритме Hafman'а, в котором символ кодируется неповторимой последовательностью битов нефиксированной длины. чем чаще встречается какой-то символ - тем короче последовательность, которая его кодирует. где почитать про это - не знаю. я это в какой-то "левой" книжке увидел. |
|||
|
||||
PILOT |
|
|||
![]() производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: нет Всего: 54 |
Каждому символу соответствует число (0-255)
Каждое число может быть записано в разных системах счисления, в двоичной, например. Число символов, которое устраивало всех (для набивания текста+простые таблицы) в текстовом режиме было около 190. Т.к. компутер понимает двоичную систему и т.к. минимальное число близкое к 190 и являющееся степенью 2-х (двоичная система) есть 256, т.е. это 2 в степени 8. мы пишем 0 в десятичной, это есть 00000000 в двоичной. пишем 36 в десятичной, это есть 00100100 в двоичной, почему так? Номера бит (нулевой всегда младший, 7 старший: т.е. любой отсчет идет с нуля): 7 6 5 4 3 2 1 0 - это байт, из 8-ми бит. 128 64 32 16 8 4 2 1 - это вес разрядов, так же как в десятичной системе десятки, 1000 100 10 1, где 9 это максимальный разряд, а тут максимальный разряд 1, т.е. сначала 0, потом 1, потом 10, потом 11 и т.д. Т.е. перенос сразу после 1-цы, а в 10-чной системе после 9-ки. Итак 01000100: Как узнать что это за число в десятичном виде: просто берем и складываем веса разрядов. нулевой разряд = 0 , с ним нечего делать и первый 0, они пустышки, теперь 2-ий = 1. Ага 3-й это значит 4 (2^2=4), дальше опять нули, до 6-го разряда (справа налево разряды считаем), 6-ый разряд = 1, ага это 64, т.к. 2^6=64 (а в уме те 4 держим). Дальше по разрядам все нули. Теперь складываем 64+4=66. 66 в десятичной системе есть 01000100. Вот и все. СУВ. -Морковь будете? -Да, пожалйста. -Разрезать? -Спасибо... -Покрошить? -Да-а!! -Разжевать????? -------------------- тут могла быть Ваша реклама... |
|||
|
||||
Dexter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1562 Регистрация: 2.7.2002 Где: Москва, Бирюлево Репутация: нет Всего: 4 |
Вопрос был вобщем-то не по этой теме,
и из двоичной системы в десятичную я умею переводить (с помощью калькулятора (шутка). -------------------- The only thing you really know about me is... ...that's all you'll ever know |
|||
|
||||
PILOT |
|
|||
![]() производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: нет Всего: 54 |
Для тех кто читает спустя рукава, повторяем: Число символов, которое устраивало всех (для набивания текста+простые таблицы) в текстовом режиме было около 190. Т.к. компутер понимает двоичную систему и т.к. минимальное число близкое к 190 и являющееся степенью 2-х (двоичная система) есть 256, т.е. это 2 в степени 8. СУВ ЗЫ. Добавлю, что есть еще 16-ричная система, в которой второй перенос происходит при переходе с 255 на 256. Т.е. очень удобно (16-ной системой пользуются любой программист... и не очень). -------------------- тут могла быть Ваша реклама... |
|||
|
||||
Kesh |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: нет Всего: 54 |
Я тут вот откопал кое-что из старых лекций.... Элементы теории кодирования. Пусть задан некоторый алфавит A={a1,a2,...,ak}, если известна вероятность появления каждого символа этого алфавита в тексте, то будем говорить, что задан ансамбль сообщений... {[a1,p1],[a2,p2],...,[ak,pk]}, где pi - вероятность появления события ai, т.е. все pi>=0, p1+p2+...+pk=1. Кодовый алфавит двоичный {0,1}. Кодированием называется операция, с помощью которой каждому сообщению ансамбля ставится в соответствие кодовое слово. Кодирование должно удовлетворять следующим двум условиям: 1. (Однозначность(обязат)) Необходимо сохранить однозначность декодирования. 2. (Экономичность(желат)) желательно, чтобы среднее количество кодовых символов, затрачиваемых на кодирование сообщения ансамбля было минимальным. Два вида кодирования:
Давайте посчитаем теперь среднюю длину символа в сообщении при "понтовом" кодировании: 2*(1/4)*2+3*(1/8)*2+4*(1/16)*4=2,75<3, немного поясню: каждое слагаемое состоит из 3-х сомножителей, первый из которых - длина символа, второй - вероятность появления символа с данной длинной кода, третий - количество таких символов в кодовом алфавите. При этом выполняется условие однозначности декодирования (префиксное условие). Это условие состоит в следующем: никакое более короткое кодовое слово не может быть началом (префиксом) более длинного кодового слова. Кодовое дерево.
Все вершины кодового дерева делятся на 2 класса: промежуточные и концевые. Кодовые наборы любого кода соответствуют концевым вершинам кодового дерева, а не промежуточным. Метод оптимального кодирования. Метод Хаффмана. Допустим, что нам надо закодировать 7 символов в двоичном кодовом алфавите... Символ | Вероятность a1 0,23 a2 0,19 a3 0,16 a4 0,14 a5 0,12 a6 0,9 a7 0,7 покажем алгоритм кодирования
Вот в общем-то и все... Не рассказал еще о кодах, обнаруживающих и исправляющих ошибки, да думаю это никому не интересно... :0) P.S. Если у кого возникнут какие вопросы - пишите... -------------------- ![]() |
||||||||
|
|||||||||
Gets |
|
|||
Unregistered |
Ну а если быть точным, то систем исчисления бывает очень много, т.е. много можно придумать, как считать числа и какие брать основания. Самые известные из них хто десятичная (0...9), двоичная (0,1), восьмиричная (0...7) и шестнадцатиричная (0...A,B,C,D,E,F).
|
|||
|
||||
Dr.Death |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 950 Регистрация: 15.7.2003 Где: Волгоград Репутация: нет Всего: 1 |
Dexter - Купи саму дешевую книжку по информатике для школ, там должно это быть.
-------------------- Жизнь коротка, чтобы быть в ней слабым.© Арнольд Шварцнеггер |
|||
|
||||
__vi |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 301 Регистрация: 21.1.2004 Репутация: нет Всего: -1 |
Восемь бит использовали потому-что стандарт ASCII предусматривал 128 символов, и если ты не знаеш то 8 бит это 1 байт. Так вот 127 в двоичной системе что-то втоде 01111111. (Битовую адресацию современные компьютеры не подерживают (т.е. минимум можно указать на байт)) Как видиш один бит мы не используем. Поетому остальные 128 символов используют для локального алфавита или для специальных символов.
ЗЫ Ели сдержал себя от мата |
|||
|
||||
podval |
|
|||
![]() Где я? Кто я? ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3094 Регистрация: 25.3.2002 Где: СПб Репутация: 18 Всего: 62 |
Модератор: Не нужно фанатизма! Вопрос задан очень давно (см. дату создания темы) и не Dexter эту тему вытащил из небытия. Подобные выпады неуместны. |
|||
|
||||
__vi |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 301 Регистрация: 21.1.2004 Репутация: нет Всего: -1 |
Ok, ok, sorry.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |