Рекомендуемое чтение для битов / байтов и пример кода для выполнения операций и т. Д. - PullRequest
2 голосов
/ 16 октября 2008

Требуется переподготовка на биты / байты, шестнадцатеричное представление и как это связано с программированием (предпочтительно C #).

Ищете хороший список для чтения (желательно онлайн).

Ответы [ 4 ]

2 голосов
/ 15 июля 2009

Здесь нужно рассмотреть несколько слоев:

  • Электронный

В электронной парадигме все является проводом.

Один провод представляет один бит.

0 - НИЗКОЕ напряжение, 1 - это Высокое напряжение. Напряжения могут быть [0,5], [-3.3, 3], [-5, 5], [0, 1.3], и т.д. Главное, что есть только два уровня напряжения, которые контролируют действие транзисторов.

Байт - это набор проводов (если быть точным, он, вероятно, собран в наборе триггеров, называемых регистрами, но давайте пока оставим его как «провода»).

  • Программирование

Бит равен 0 или 1.

Байт - в современных системах - 8 бит. Древние системы могли иметь 10-битные байты или другие размеры; они не существуют сегодня.

A nybble - 4 бита; полбайта.

Шестнадцатеричное является эффективным представлением 8 бит. Например: F отображается на 1111 1111. Это более эффективно, чем писать 15. Кроме того, совершенно ясно, если вы записываете несколько байтовых значений: FF однозначен; 1515 можно прочитать несколькими разными способами.

Исторически восьмеричное также использовалось (база 8). Тем не менее, единственное место, где я встретился, это в разрешениях Unix.

Поскольку на электронном уровне наиболее эффективно собирать память в группах по 2 ^ n hex является естественным обозначением для представления объем памяти. Кроме того, если вы работаете на уровне водителя, вы можете необходимо специально контролировать данный бит, который потребует использования операторов битового уровня. Ясно, какие байты на HI, если вы говорите F & outputByte чем 15 & outputByte.

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

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

Хотя вы хотели C #, C # действительно не подходит для битового уровня манипуляция. Традиционно C и C ++ являются языками, используемыми для бит Работа. Erlang работает с битовыми манипуляциями, а Perl поддерживает его как Что ж. VHDL полностью бит-ориентирован, но довольно сложен в работе с типичной точки зрения программирования.

Вот пример кода C для выполнения различных логических операций:

char a, b, c;  
c = a ^ b;      //XOR
c = a & b;      //AND
c = a | b;      //OR
c = ~(a & b);   //NOT AND(NAND)
c = ~a;         //NOT
c = a << 2;     //Left shift 2 places
c = a >> 2;     //Right shift 2 places.
0 голосов
/ 16 октября 2008

Вот базовое прочтение: http://www.learn -c.com / data_lines.htm

Биты и байты почти никогда не относятся к C #, поскольку CLR обрабатывает память самостоятельно. Существуют классы и методы, обрабатывающие шестнадцатеричные обозначения, и все эти вещи в фреймворке. Но это все еще весело читать.

0 голосов
/ 16 октября 2008

Напиши отличный код - хороший учебник по этой теме среди других ... выводит тебя из чистого металла в языки высшего порядка.

0 голосов
/ 16 октября 2008

Бит равен 1 или 0.

Байт составляет 8 бит.

Каждый символ в шестнадцатеричном формате представляет собой 4 бита, представленных как 0-F

  • 0000 - это 0
  • 0001 - 1
  • 0010 - 2
  • 0011 - 3
  • ...
  • 1110 является E
  • 1111 - это F

Есть довольно хорошее введение в операции с битами в C # здесь

...