Что за логические операции?

 
if(!Hour() >= Start)...

Li_12 = Ai_0 >> Li_16 & 15;
 
О спасибо, я подожду может кто знает.
 

Идентично выражению if((!Hour())>=Start)... и не идентично выражению if(!(Hour()>=Start)).

 Сначала выполняется отрицание Hour(), потом сравнение ">=".

 

Скорее всего, автор выражения ошибся, т. к. !Hour() даст либо 0 (если Hour() больше нуля), либо 1 (если Hour() равно нулю). Подозреваю, что в Start указывается час начала работы, который принимает значения не только 0 и 1. 

Если же речь о побитовых операциях, то выражение Ai_0 >> Li_16 & 15 будет выполнено так:

1. Значение Ai_0 делится на 2 в степени Li_16.

2. В полученном значении принимаются во внимание только младшие 4 бита, старшие отбрасываются.

 

В результате значение Li_12 будет равно от  0 до 15 включительно.

 
Scriptong:

Скорее всего, автор выражения ошибся, т. к. !Hour() даст либо 0 (если Hour() больше нуля), либо 1 (если Hour() равно нулю). Подозреваю, что в Start указывается час начала работы, который принимает значения не только 0 и 1. 

Если же речь о побитовых операциях, то выражение Ai_0 >> Li_16 & 15 будет выполнено так:

1. Значение Ai_0 делится на 2 в степени Li_16.

2. В полученном значении принимаются во внимание только младшие 4 бита, старшие отбрасываются.

 

В результате значение Li_12 будет равно от  0 до 15 включительно.

имхенько, все проще. Начало нового дня кто как может, так и отслеживает. 
 

Спасибо.

 Равноценно этому? Тогда хе.ня получается.

if(!Hour() >= Start)

if(Hour()==0 && Hour()>=Start)
 
Scriptong:

...

Если же речь о побитовых операциях, то выражение Ai_0 >> Li_16 & 15 будет выполнено так:

1. Значение Ai_0 делится на 2 в степени Li_16.

2. В полученном значении принимаются во внимание только младшие 4 бита, старшие отбрасываются.

 

В результате значение Li_12 будет равно от  0 до 15 включительно.

Спасибо.

Компилятор  просит () поставить.

 
eevviill:

Спасибо.

 Равноценно этому? Тогда хе.ня получается.

Да. Ошибка наверно. Скорее, подразумевалось if(!(Hour()>=Start)).

Скобки так: (Ai_0 >> Li_16) & 15 

 
Integer:

Да. Ошибка наверно. Скорее, подразумевалось if(!(Hour()>=Start)).

Скобки так: (Ai_0 >> Li_16) & 15 

ok.

Ещё один вопрос. Потому что так объяснили, что легче не вникать.

 Если по простому что за сдвиг побитовых операций? Тут бит это наименьшая еденица измерения данных?

 

Дополнение до единицы

Дополнение до единицы значения переменной. Значение выражения содержит 1 во всех разрядах, в которых значение переменной содержит 0, и 0 во всех разрядах, в которых значения переменной содержит 1. 

 Пример:

   char a='a',b='b';
   Print("Before:  a = ",a, "  b = ",b); 
//--- произведем сдвиг вправо   
   b=a>>1;
   Print("After:   a = ",a, "  b = ",b); 
// Результат будет такой:
// Before:  a = 97   b = 98
// After:   a = 97   b = 48

 

Записываем число в двоичной системе, например, 2:

0010 

При сдвиге на один бит в одну  сторону будет:

0100

т.е. 4.

При сдвиге в другую сторону будет:

0001

т.е. 1.

------------------

   int x=2;

   int y=x<<1; // y=4 

-

  int x=2;

   int y=x>>1; // y=1 

Причина обращения: