Как нарисовать круговую диаграмму в Android

Я думаю, что вторая часть вопроса:

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

blockquote>

Был только частично рассмотрен. Это мои два цента по этому вопросу.

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

Во всех приложениях, которые должны отправлять данные между двумя узлами, такими как:

  • компьютерные сети;
  • телекоммуникационные приложения (сотовые телефоны, спутниковая связь , и т. д.).

На уровне связи нижнего уровня данные обычно отправляются в так называемых кадрах. Фреймы - это просто строки байтов, которые отправляются через физический канал. Эти кадры обычно содержат фактические данные плюс некоторые другие поля (закодированные в байтах), которые являются частью того, что называется заголовком. Заголовок обычно содержит байты, которые кодируют некоторую информацию, связанную с состоянием связи (например, с флагами (битами)), счетчики кадров, коды коррекции и обнаружения ошибок и т. Д. Чтобы получить переданные данные в кадре и построить кадры для отправки данных, вам понадобятся наверняка побитовые операции.

В общем, при работе с такими приложениями API доступен, поэтому вам не нужно разбираться со всеми этими деталями. Например, все современные языки программирования предоставляют библиотеки для соединений сокетов, поэтому на самом деле вам не нужно создавать кадры связи TCP / IP. Но подумайте о хороших людях, которые запрограммировали эти API для вас, им наверняка пришлось иметь дело с рамочной конструкцией; используя все виды побитовых операций для перехода от низкоуровневой связи к высокоуровневой связи.

Как конкретный пример, представьте, что кто-то дает вам файл, который содержит необработанные данные, которые были захвачены напрямую с помощью телекоммуникационного оборудования. В этом случае, чтобы найти кадры, вам нужно будет прочитать необработанные байты в файле и попытаться найти какие-то слова синхронизации, сканируя данные по частям. После определения слов синхронизации вам нужно будет получить фактические кадры и, если необходимо, SHIFT их (и это только начало истории), чтобы получить фактические данные, которые передаются.

Еще одна очень различное семейство приложений низкого уровня - это когда вам нужно управлять оборудованием, используя некоторые (древние) порты, такие как параллельные и последовательные порты. Эти порты управляются путем установки некоторых байтов, и каждый бит этих байтов имеет конкретное значение с точки зрения инструкций для этого порта (см., Например, http://en.wikipedia.org/wiki/Parallel_port ). Если вы хотите создать программное обеспечение, которое что-то делает с этим оборудованием, вам понадобятся побитовые операции для перевода инструкций, которые вы хотите выполнить, в байты, которые порт понимает.

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

read = ((read ^ 0x80) >> 4) & 0x0f; 

Надеюсь, что это поможет.

14
задан Smile 3 September 2016 в 09:06
поделиться