2013-10-03 4 views
-1

Я использую C для разработки моей программы, и я узнал из примера кодаЧто означает hibyte = Value >> 8?

unHiByte = unVal >> 8; 

Что это значит ?? Если unVal = 250. Каково значение для unHiByte ??

Я действительно путают с this..Please Помощь ..

Заранее спасибо ..

+0

[Операторы сдвига: >> и <<] (http://msdn.microsoft.com/en-us/library/336xbhcz.aspx) –

+0

Чтение [Что означает этот оператор «>> =» в C?] (Http : //stackoverflow.com/questions/17769948/what-does-this-operator-mean-inc/17769959#17769959) –

+1

Почему бы не si просто попробуй это для себя? – bitmask

ответ

2

">>" в программировании операция поразрядного. Операция >> означает операцию сдвига вправо. Таким образом, unVal >> 8 означает shift right unVal на 8 бит. сдвига бита вправо можно интерпретировать как деления значения на 2.

Следовательно, unHiByte = unval >> 8 означает unHiByte = unVal/(2^8) (разделить на 2 unVal восемь раз)

+0

Небольшое разъяснение >> 1 означает деление на 2 раза. Первая часть ответа делает его похожим на >> 8 означает деление на 2 раза. +1 – fayyazkl

+0

Got It..Thank u soo much –

+0

@fayyazkl жаль об этом, может быть, это только мой плохой способ объяснить. haha – CodingBird

0

Не вдаваясь в сам оператор сдвига (поскольку это уже ответили), здесь предполагается, что unVal представляет собой двухбайтную переменную с высоким байтом (верхние 8 бит) и младшим байтом (младшие 8 бит). Цель состоит в том, чтобы получить значение, полученное ТОЛЬКО верхними 8 битами и отбрасывание младших бит.

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

+0

OK so unHiByte = unVal << 8; означает получение только младших 8 бит из unVal ??Пожалуйста, сделайте это слишком ясным для меня. –

+0

Не совсем. Однако концепция правильная. Но проблема в том, что когда вы сдвигаете какую-то вещь, она добавляет 8 нулей в младший байт и продвигает младший байт на более высокий. Чтобы получить только младшие бит, он будет иметь маску с правом только 8 бит как 1, т. Е. UnVal & 255. – fayyazkl

+0

Получил это. У вас очень много –

0

The >> is a bitwise right shift.

Он работает на битах. С unHiByte = unVal >> 8; Когда unVal=250.

Its binary form is 11111010

Сдвиг вправо означает сдвиг битов вправо. Поэтому, когда вы меняете 1111 1010, 8 цифр справа вы получите 0000 0000.

Примечание: Вы можете легко определить правильный результат операции сдвига путем деления числа слева от >> на 2^(число справа от >>)

Так, 250/2= 0

Смежные вопросы