Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/43: Рейтинг темы: голосов - 43, средняя оценка - 4.63
15 / 15 / 5
Регистрация: 06.04.2012
Сообщений: 287
1

Представление числа в двоичной системе счисления

15.10.2012, 12:37. Показов 8471. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Можете объяснить как люди выражают цифры в двоичном системе счисления к примеру цифру 94 - типа одна цифра делится на 4. Ну типа того: 01001110
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.10.2012, 12:37
Ответы с готовыми решениями:

Проверить правильность ввода числа в двоичной системе счисления и перевести это число из двоичной системы в десятичную
Здравствуйте! Подскажите, пожалуйста, как исправить код, чтобы выполнялось задание. Делала на...

Калькулятор для целых чисел в двоичной системе счисления
Создать программу – калькулятор для целых чисел в двоичной системе счисления. Должны быть кнопки +...

Задано неотрицательное целое число в двоичной системе счисления. Требуется перевести его в десятичную.
Задано неотрицательное целое число в двоичной системе счисления. Требуется перевести его в...

Проверить правильность ввода числа в двоичной системе
Дано число в двоичной системе счисления. Проверить правильность ввода этого числа (в его записи...

9
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
15.10.2012, 13:18 2
http://ru.wikipedia.org/wiki/Система_счисления
1
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
15.10.2012, 15:17 3
Вот. Может понадобится.
1
15 / 15 / 5
Регистрация: 06.04.2012
Сообщений: 287
15.10.2012, 15:23  [ТС] 4
Всё спасибо, просто нужно значение делить на 2 и из остатка получаем то, что нужно.
0
608 / 583 / 157
Регистрация: 29.06.2010
Сообщений: 1,620
15.10.2012, 16:32 5
это только саааамая верхушка айсберга)
0
15 / 15 / 5
Регистрация: 06.04.2012
Сообщений: 287
15.10.2012, 17:42  [ТС] 6
Spectral-Owl, А основание айсберга как увидеть ? Есть примеры ?
0
608 / 583 / 157
Регистрация: 29.06.2010
Сообщений: 1,620
16.10.2012, 14:40 7
ну, некоторые моменты по поводу систем счисления скажу я, т.к. влом ссылки искать:

1) система счисления может иметь любое целое положительное основание, отличное от единицы
(в смысле двоичная, десятичная и т.д.)

2) количество систем счислений безгранично
(т.к. я могу придумать и троичную, и десяти_тысячно_пятдесят_шестиричную)

3) наиболее удобны те системы счисления, чьё основание кратно степени двойки
(восьмиричная, шестнадцатиричная, т.к. они очень просто переводятся в двоичную и обратно)


к примеру перевод числа из 16ой СС в 2ую:
каждому числу в 16ой СС соответсвует 4 в двоичной. дальше рисуются соответсвия вида:
Кликните здесь для просмотра всего текста

1 - 0001
2 - 0010
3 - 0011
4 - 0100
5 - 0101
6 - 0110
7 - 0111
8 - 1000
9 - 1001
A - 1010
B - 1011
C - 1100
D - 1101
E - 1110
F - 1111


И перевод становится элементарным: к примеру отобразить в довичной СС число F3
F=1111
3=0011
итого F3==11110011

ну както так)
2
181 / 179 / 23
Регистрация: 29.08.2012
Сообщений: 489
16.10.2012, 19:00 8
Не совсем понятна природа Вашего вопроса, да и его суть. Надеюсь всё же среди написанного найдётся что-то "в тему".

Общий принцип систем исчисления состоит в том, что когда в одном разряде исчерпаны все символы для обозначения количества (для 16-ричной это 0-1-2-3-4-5-6-7-8-9-A-B-C-D-E-F, для двоичной 0-1), то этот разряд сбрасывается (обычно в ноль) на начальное значение, а следующий разряд получает приращение на один шаг.

Те кто программирует постоянно, особенно те, кто на ассемблере что-то вояет свободно переводят подобные числа в hex или binary просто в голове, так же как обычные люди обращаются с цифрами в десятичной системе. Важно понимать, что десятичная система ничем не примечательна относительно других, тем паче мне странно наблюдать когда люди стремяться к "круглым" цифрам. Круглые они в одной системе, но не круглые в другой, а количество обозначают одно и тоже. Так что это чисто психологический момент.
В большинстве случаев программисту нет нужды переводить числа из одной системы в другую - это, как правило, уже реализовано. Изначально аппаратная природа компьютера приспособлена для операций с двоичными числами - это происходит от электрического уровня организации компьютера и процессора, в частности, которые общаются с помощью сигналов с двумя устойчивыми состояниями (высокий и низкий уровень). На логическом уровне это выливается в единицу (1) и ноль (0). Таким образом, с какими бы числами не работал компьютер, он, на самом деле, всегда работает с двоичными числами. А ежели так, то логично было бы просто взять у него число прямо в таком представлении, раз уж нам надо. Почти во всех языках программирования такая возможность есть. Обычно там уже есть аппарат для свободной работы с двоичными, десятичными, шестнадцатиричными числами. Шестнадцатиричная система существенно компактнее двоичной в плане записи и видимо по этой причине и вошла в применение (возможно исторически было немного не так).
Обращение программиста к двоичной системе часто связано с необходимостью создания какого либо алгоритма. Например, умножение или деление кратное 2 более экономно реализовать сдвигом битов на один или несколько позиций - при сдвиге на одну позицию значение числа будет изменяться в 2 раза. Подобные сдвиги реализованы на уровне команд процессора и их выполнение очень экономично в сравнении с отработкой обычного алгоритма умножения или деления. Это лишь один из примеров, наиболее понятный по сути. Часто работа с двоичными числами связана с необходимостью логических операций, с помощью так называемой булевой алгебры, логика которой завязана на два состояния - TRUE (1) и FALSE (0).

Перевод числа из двоичной системы можно реализовать различными методами.
Будем считать, что число 94 хочет перевести в двоичную форму человек без всяких приспособлений.
Каждый следующий разряд двоичной системы имеет "вес" в два раза отличающийся от соседнего (у 10-тичной системы отличие в 10 раз):
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
128_64_32__16__8__4___2___1
Смотрим какое ближайшее к 94 значение - это 64. Выставляем bit6=1. Вычитаем 94-64=30. Проделываем с 30 тоже самое, что и с 94 - ищем ближайшее значение. И так далее. На самом деле когда осталось 30 это число чисто умозрительно легко набрать из значений 16+8+4+2, фактически не производя никаких вычислений, просто подбирая последовательно значения. Все биты, участвующие в "наборе" числа 94 выставляем в 1, остальные 0. Получается 01011110.
2
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
16.10.2012, 23:19 9
Yurek, нормально объяснил Хотя в следующий раз лучше стену текста абзацами с красной строкой побольше разбавляйте

Spectral-Owl, скажу вам по скеркету, что основанием системы счисления может быть любое действительное число, а не только 2 3 и десяти_тысячно_пятдесят_шестиричная. Например, как вам СС с основанием пи, или е? Вообще из курса теории информации оказывается, что оптимальное основание системы счисление равно е. Оптимальная по таким параметрам - с одной стороны требуется минимальный алфавит, с другой стороны - длина сообщения должна быть тоже наименьшей. Минимумом это функции от двух параметров является решение уравнения
lnP = 1, откуда P=e
Подробнее: вики http://ru.wikipedia.org/wiki/%... 0.B8.D1.8F
И тут покороче: http://xax.al.ru/aout/c1.htm
1. Существует ли оптимальное основание системы счисления?

Посмотрим на график функции, изображенный на рисунке 1.
http://xax.al.ru/aout/b4.files/image001.gif

Нетрудно показать [8], что максимум достигается в точке х = е, где е – трансцендентное число, которое приближенно равно 2.71828… ( ©Эйлер ).

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

Здесь мы запускаем второй закон природы, закон развития – струя дырочку найдет.

Воспользуемся услугами смешанной системы счисления, то есть системы счисления с несколькими основаниями.

Запишем число в виде поличлена

x = x0·q0 + x1·q1 + … + xn·qn . (2.1)

Взглянем формально на это выражение.

Здесь xi можно интерпретировать в качестве признаков, свойств, координат числа х.

Символы qi совсем не обязательно должны обозначать степенную функцию, просто в этом случае разложение (2.1) единственно, но такой мелочью можно пренебречь.

Вспомним формулы (1.3) – (1.5).

Выделим основное свойство системы счисления с постоянным основанием. Для этого добавим в (2.1) один разряд. Получим, что общее количество символов hq увеличилось на q символов, тогда как, общее количество чисел Nq возросло в q раз. Таким образом, имеем взаимно однозначное отображение

q·i ↔ qi , (2.2)

где i любое натуральное число, в нашем случае.

В смешанной системе счисления, добавление одного члена в формулу (2.1), очевидно, приведет к неравномерному увеличению hq , но отображение (2.2) должно оставаться взаимно однозначным.

Далее, поскольку число е лежит между 2 и 3, то основания смешанной системы счисления попытаемся найти в виде линейной смеси двоек и троек. Для этого, перепишем соотношение (2.2) в следующем виде

2·a + 3·b ↔ 2a·3b , (2.3)

где a и b пока не определенные целые индексы.

Подгоним a и b так, чтобы сохранялось условие взаимной обратимости отображения (2.3). В итоге получим результат в виде следующего правила – индекс b пробегает всю область натуральных чисел, а индекс a только 0,1,2.

Посмотрим, что получилось.

Изменяя индексы a и b , таким нехитрым способом, мы можем добиться того, что hab изменяется равномерно на единицу, как будто мы используем систему счисления с основанием равным единице. Далее, Nab изменяется уж очень знакомо, получается так, что ряд, образованный троичной системой счисления ( 3b , 2·3b ) разбавлен числами 4·3b, но в следующей последовательности

( 3b , 4·3b , 2·3b ) , (2.4)

или как показано на рисунке 2.



Рисунок 2.

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

Получилось! Это то, что нам надо. Теперь на координатные точки (2.4), как на скелет, можно натягивать натуральные, целые и даже рациональные числа.

Прежде всего, введем новые обозначения.

Заменим hq на L и дадим ему термин символьный логарифм.

Заменим Nq на E и дадим ему термин символьная экспонента.

Прямое отображение (2.3) обозначим функцией

E = e( L ) , (2.5)

а обратное

L = l( E ) . (2.6)

С помощью таблицы 1 сформулируем правила вычисления этих функций.

Для функции e( ) правило - остаток от деления L на 3 дает 2·a, а целое есть 3·b, тогда E = 2a · 3b.

Для функции l( ) правило - делим E нацело b раз, остальное будет 2a, тогда L = 2·a + 3·b.

В конечном итоге, доопределим эти функции в начале числовой оси, и оформим таблицу, расширив диапазон на область целых чисел – рисунок 3.

Рисунок 3.

Справа, на графике, показаны значения функции E = e(L).

Довольно долго не попадалось мне на глаза что-либо похожее, ни в Интернете, ни в научной литературе, но потом нашел. Оказывается, данная тема интересует структурных лингвистов. В статье [9] приводится строгое доказательство оптимальности данной функции для эффективного разбиения множества объектов любой природы по именным признакам. Нам будет достаточно утверждения того, что e( ) является не только оптимальной, но и единственной из всех возможных функциональных отображений вида (2.3), и определенной на всем множестве целых чисел.
1
181 / 179 / 23
Регистрация: 29.08.2012
Сообщений: 489
17.10.2012, 11:05 10
Спасибо уважаемому Psilon, за интересную информацию. Осталось её осознать
Кстати, надыбал тему этого форума за авторством SuPeR XaKer - Системы счисления
0
17.10.2012, 11:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.10.2012, 11:05
Помогаю со студенческими работами здесь

Перевод числа из двоичной системы счисления в 16-ричную
Добрый день! Как перевести числа из двоичной системы счисления в 16-ричную, не используя...

Перевод числа из двоичной системы счисления в восьмеричную
Как перевести из 2-ой СС в 8-ю СС?

Разработать рекурсивный метод для перевода числа из двоичной системы счисления в десятичную
Разработать рекурсивный метод для перевода числа из двоичной системы счисления в десятичную. с#

Вывести числа в римской системе счисления из текстового файла
В текстовом файле могут содержаться (как отдельные слова) числа в римской системе счисления....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru