Рубрика «биты»

Диск — это просто куча битов - 1


Доводилось ли вам слышать утверждение, что диск или память — это «просто куча битов?»
Не знаю точно, откуда эта идея пошла, но она вполне разумна и в некоторой степени рассеивает таинственный ореол вокруг компьютеров. Например, она опровергает теорию о том, что внутри моего ПК живёт очень плоский эльф.

Оказывается нет, в нём находятся биты, закодированные в электрических компонентах.

И всё же компьютеры по-прежнему хранят в себе загадочность. Что это за биты? Что они означают? Можем ли мы с ними поиграться, спарсить их, понять?

Далее я покажу вам, что всё это определённо возможно! Ради вашего развлечения я засуну руку в свой ПК, вытащу оттуда кучку битов, и мы их с вами изучим.Читать полностью »

Эффективная работа с битами при помощи Go - 1


Это статья познакомит вас с использованием возможностей Go для выполнения манипуляций с битами. Здесь мы разберём установку, очистку, инвертирование, сдвиг битов, использование техники SWAR, эффективную обработку Юникода и прочие приёмы, позволяющие повысить продуктивность программирования.Читать полностью »

Почему в байте именно 8 бит? - 1


Я опубликовала в интернет-журнале статью на тему двоичного представления информации компьютерами и, среди прочих, неоднократно получала вопрос: «Почему в архитектуре x86 используются байты, состоящие именно из 8 бит, а не иного их количества?»

Я считаю, что на любой подобный вопрос можно дать два основных ответа и некую их комбинацию:

  1. Так сложилось исторически, и другой размер (например, 4, 6 или 16 бит) тоже вполне сработает.
  2. Восемь бит по какой-то причине является лучшим вариантом, и даже если бы история сложилась иначе, мы бы всё равно использовали именно 8-битные байты.
  3. Некая комбинация этих двух версий.

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

Бумажный бит: создание механической памяти из оригами - 1

«Бегущий по лезвию», «Воздушная тюрьма», «Heavy Rain» — что общего между этими представителями массовой культуры? Во всех в той или иной степени присутствует древнее японское искусство по складыванию бумаги — оригами. В кино, играх и в реальной жизни оригами частенько используется в качестве символа определенных чувств, каких-то воспоминаний или своеобразного послания. Это скорее эмоциональная составляющая оригами, но с точки зрения науки в бумажных фигурках сокрыто множество интересных аспектов из самых разных направлений: геометрия, математика и даже механика. Сегодня мы с вами познакомимся с исследованием, в котором ученые из Американского института физики создали устройство хранения данных за счет складывания/раскладывания фигурок оригами. Как именно работает бумажная карта памяти, какие принципы в ней реализованы и сколько данных может хранить такое устройство? Ответы на эти вопросы мы найдем в докладе ученых. Поехали.Читать полностью »

Храним числа экономно - 1 Недавно в одном из проектов встала задача: есть набор множеств (Set), которые надо достаточно эффективно хранить в оперативной памяти. Потому что множеств много, а памяти мало. И с этим надо что-то делать.

Так как язык, на котором всё это написано — C#, то есть нюансы. А именно, что стандартный HashSet<int> на хранение одного числа тратит 16 байт, также влияет филл фактор. Есть более эффективные реализации (когда-нибудь и про них напишу), но с другой стороны, можно же тупо хранить в массивах, по 4 байта на число (требуется хранить инты), что достаточно эффективно. Но можно ли уменьшить ещё?

Сразу скажу, у меня нет ответа, как лучше сделать, возможно его не существует, ибо есть множество факторов, связанных с особенностями распределения конкретных данных. Но есть идеи, которыми я поделюсь: какие варианты экономии памяти существуют. Также рекомендую до прочтения поста подумать самостоятельно, всё-таки это неплохая разминка для ума. Для определённости сформулирую задачу следующим образом:

Есть набор неотрицательных уникальных интов (32 бита). Требуется хранить их эффективно в оперативной памяти, из операций — создание набора и получение всех элементов. Не нужно получать элементы по индексу, добавлять новые или удалять.

В статье будет много букв и цифр и ни одной картинки (кроме упакованного котика на КДПВ).
Читать полностью »

Добрый день. Эту статью я написал специально для студентов курса «Алгоритмы для разработчиков» в OTUS и сегодня хочу поделиться ею со всеми читателями нашего блога.

Шахматный конь стоит на шахматной доске и задумчиво смотрит в шахматную даль.
Сколько разных ходов он может сделать?

image

Хвала изобретателю шахмат, на доске 64 клетки.
Хвала архитектору компьютеров — у типа ulong тоже 64 бита.
Это же надо было случиться такому совпадению!
Напрашивается гениальная идея — хранить всю доску в одном целом числе! Для этого решения существует даже специальный термин — Bitboard — битовая доска.

Так как же быстро найти количество ходов шахматного коня, используя эту идею?Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js