Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Продукция MICROCHIP

Продукция MICROCHIP Технические вопросы по всей продукции Microchip

Ответ
 
Опции темы Опции просмотра
Старый 12.01.2013, 00:53   #1
Ferrum-1827
Member
 
Регистрация: 07.12.2012
Сообщений: 32
Вес репутации: 100/23
Ferrum-1827 will become famous soon enoughFerrum-1827 will become famous soon enough
По умолчанию Сдвиг с сохранением

Интересует сабж, возможно ли командой сделать сдвиг влево/вправо в 8-битном слове, чтобы сдвигаемый бит RR 1>0>7 , а RL 7<0<1

Поподробнее - чтобы сдвигаемый крайний бит не терялся, а просто циклился в сдвиге 8-битного регистра ?

Прибор = простейшие 16F628A, 12F675
Ferrum-1827 вне форума   Ответить с цитированием
Старый 12.01.2013, 01:11   #2
Machine slave
Senior Member
 
Аватар для Machine slave
 
Регистрация: 18.01.2008
Возраст: 36
Сообщений: 4,264
Вес репутации: 2731/109
Machine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond repute
По умолчанию Re: Сдвиг с сохранением

Нет. Инструкции сдвига работают через CARRY.
Цитата:
RLF - Rotate Left f through Carry
RRF - Rotate Right f through Carry
__________________
read only
Machine slave вне форума   Ответить с цитированием
Старый 12.01.2013, 01:25   #3
Vlad&mir
Senior Member
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 1,720
Вес репутации: 4407/97
Vlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond repute
По умолчанию Re: Сдвиг с сохранением

На С будет сложнее:
Код:
union
 {
   struct
    {
      unsigned char lo;
      unsigned char hi;
    };

   unsigned int   wrd;

 } Var;


void test(void)
{
  // сдвиг Var.lo влево с "зацикливанием"

  Var.lo = 1; //  <-- сколько Вам надо

  Var.hi = 0;
  Var.wrd <<= 1;
  Var.lo  += Var.hi;

  // сдвиг Var.hi вправо с "зацикливанием"

  Var.hi = 1; //  <-- сколько Вам надо

  Var.lo = 0;
  Var.wrd >>= 1;
  Var.hi  += Var.lo;

}
На asm

Вправо
Код:
   rrf   Var, W
   rrf   Var, F
Влево
Код:
   rlf   Var, W
   rlf   Var, F
Vlad&mir вне форума   Ответить с цитированием
Старый 12.01.2013, 01:37   #4
Ferrum-1827
Member
 
Регистрация: 07.12.2012
Сообщений: 32
Вес репутации: 100/23
Ferrum-1827 will become famous soon enoughFerrum-1827 will become famous soon enough
По умолчанию Re: Сдвиг с сохранением

Спасибо за ответы, на С программирую, хочу обойтись без Hi, вроде операция простяцкая - выполнение "RRL RRR" - извиняюсь за синтаксис - по пониманию писал под Z80...

по ДШ понял, что при сдвиге теряются биты, а вот как работать с флагами...помогают ли они сохранить сдвинутое, можно ли флагами вернуть потерянный сдвиг, и как сделать простой сдвиг байта без потерь ?
Ferrum-1827 вне форума   Ответить с цитированием
Старый 12.01.2013, 01:42   #5
Ferrum-1827
Member
 
Регистрация: 07.12.2012
Сообщений: 32
Вес репутации: 100/23
Ferrum-1827 will become famous soon enoughFerrum-1827 will become famous soon enough
По умолчанию Re: Сдвиг с сохранением

Цитата:
RLF - Rotate Left f through Carry
RRF - Rotate Right f through Carry
- т.е. через флаг переноса

А как это будет выглядеть ?
Ferrum-1827 вне форума   Ответить с цитированием
Старый 12.01.2013, 01:49   #6
Vlad&mir
Senior Member
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 1,720
Вес репутации: 4407/97
Vlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond repute
По умолчанию Re: Сдвиг с сохранением

Цитата:
Сообщение от Ferrum-1827 Посмотреть сообщение
...А как это будет выглядеть ?

Цитата:
Сообщение от Vlad&mir Посмотреть сообщение
На asm

Вправо
Код:
   rrf   Var, W
   rrf   Var, F
Влево
Код:
   rlf   Var, W
   rlf   Var, F
Vlad&mir вне форума   Ответить с цитированием
Старый 12.01.2013, 01:53   #7
Vanizma
Senior Member
 
Аватар для Vanizma
 
Регистрация: 30.04.2008
Адрес: Pskov
Сообщений: 4,140
Вес репутации: 4450/124
Vanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond repute
Отправить сообщение для Vanizma с помощью ICQ
По умолчанию Re: Сдвиг с сохранением

Цитата:
Сообщение от Ferrum-1827 Посмотреть сообщение
Спасибо за ответы, на С программирую, хочу обойтись без Hi, вроде операция простяцкая - выполнение "RRL RRR" - извиняюсь за синтаксис - по пониманию писал под Z80...
Код:
if (a&0x80)
{
a<<=1
a |=1;
}
else
a<<=1;
так вроде
__________________

Vanizma вне форума   Ответить с цитированием
Старый 12.01.2013, 02:04   #8
Ferrum-1827
Member
 
Регистрация: 07.12.2012
Сообщений: 32
Вес репутации: 100/23
Ferrum-1827 will become famous soon enoughFerrum-1827 will become famous soon enough
По умолчанию Re: Сдвиг с сохранением

Цитата:
Сообщение от Vanizma Посмотреть сообщение
Код:
if (a&0x80)
{
a<<=1
a |=1;
}
else
a<<=1;
так вроде
Да, вроде всё верно...

Тогда RR получается так
Код:
if (a.F0)
{a>>=1;
a.F7=1;
}
else
a>>=1;
Верно ?
Ferrum-1827 вне форума   Ответить с цитированием
Старый 12.01.2013, 02:28   #9
Ferrum-1827
Member
 
Регистрация: 07.12.2012
Сообщений: 32
Вес репутации: 100/23
Ferrum-1827 will become famous soon enoughFerrum-1827 will become famous soon enough
По умолчанию Re: Сдвиг с сохранением

Ну а если на асм сделать вставку
Код:
Вправо
   rrf   Var, W
   rrf   Var, F
Влево
   rlf   Var, W
   rlf   Var, F
будет адекватнее ?
Ferrum-1827 вне форума   Ответить с цитированием
Старый 12.01.2013, 02:50   #10
Vlad&mir
Senior Member
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 1,720
Вес репутации: 4407/97
Vlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond repute
По умолчанию Re: Сдвиг с сохранением

Цитата:
Сообщение от Ferrum-1827 Посмотреть сообщение
Ну а если на асм сделать вставку
Код:
Вправо
   rrf   Var, W
   rrf   Var, F
Влево
   rlf   Var, W
   rlf   Var, F
будет адекватнее ?
И главное, код будет короче и выполняться будет значительно быстрее.
Vlad&mir вне форума   Ответить с цитированием
Старый 12.01.2013, 11:16   #11
Ferrum-1827
Member
 
Регистрация: 07.12.2012
Сообщений: 32
Вес репутации: 100/23
Ferrum-1827 will become famous soon enoughFerrum-1827 will become famous soon enough
По умолчанию Re: Сдвиг с сохранением

Сделал asm вставочку в код - всё поехало, спасибо
Код:
asm{rlf   ii, W;
    rlf   ii, F; }
Ferrum-1827 вне форума   Ответить с цитированием
Старый 12.01.2013, 13:36   #12
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,789
Вес репутации: 5397/163
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: Сдвиг с сохранением

Цитата:
Сообщение от Ferrum-1827 Посмотреть сообщение
Сделал asm вставочку в код - всё поехало, спасибо
Код:
asm{rlf   ii, W;
    rlf   ii, F; }
верни назад, на Си. не стоит она (вставка) того.
Если уж очень хочется асма, пиши на нём функцию целиком.
Greg вне форума   Ответить с цитированием
Старый 12.01.2013, 13:46   #13
Vlad&mir
Senior Member
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 1,720
Вес репутации: 4407/97
Vlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond repute
По умолчанию Re: Сдвиг с сохранением

Цитата:
Сообщение от Greg Посмотреть сообщение
верни назад, на Си. не стоит она (вставка) того.
Если уж очень хочется асма, пиши на нём функцию целиком.
Ух ты! А мужики-то не знают!

startup из С18:
Код:
void
_startup (void)
{
  _asm
    // Initialize the stack pointer
    lfsr 1, _stack
    lfsr 2, _stack

    clrf TBLPTRU, 0 // 1st silicon doesn't do this on POR

    bcf __FPFLAGS,RND,0 // Initalize rounding flag for floating point libs
_endasm loop:

  // If user defined __init is not found, the one in clib.lib will be used
  __init ();

  // Call the user's main routine
  main ();

  goto loop;
}                               /* end _startup() */
Vlad&mir вне форума   Ответить с цитированием
Старый 12.01.2013, 14:00   #14
tester
Super Moderator
 
Аватар для tester
 
Регистрация: 28.02.2007
Возраст: 41
Сообщений: 3,577
Вес репутации: 4386/121
tester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond repute
По умолчанию Re: Сдвиг с сохранением

Цитата:
Сообщение от Ferrum-1827 Посмотреть сообщение
Сделал asm вставочку в код - всё поехало, спасибо
Код:
asm{rlf   ii, W;
    rlf   ii, F; }
Так нельзя делать. МикроСи сам выбирает банк для размещения переменной, а у Вас в коде нет установки RP0 и RP1. Программа сейчас работает, а пройдет пара месяцев - она разрастется, и в какой-то момент компилятор решит переменную ii вынести в bank1, Ваша программа начнет глючить, будете очень долго искать причины.

Кроме того, даже если Вы и выставите RP0 и RP1 в соответствие с адресом ii, то потом их надо будет вернуть назад, т.к. компилятор при оптимизации игнорирует все, что в скобках asm { }
tester вне форума   Ответить с цитированием
Старый 12.01.2013, 14:07   #15
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,789
Вес репутации: 5397/163
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: Сдвиг с сохранением

Цитата:
Сообщение от Vlad&mir Посмотреть сообщение
Ух ты! А мужики-то не знают!

startup из С18:
Код:
void
_startup (void)
{
  _asm
    // Initialize the stack pointer
    lfsr 1, _stack
    lfsr 2, _stack

    clrf TBLPTRU, 0 // 1st silicon doesn't do this on POR

    bcf __FPFLAGS,RND,0 // Initalize rounding flag for floating point libs
_endasm loop:

  // If user defined __init is not found, the one in clib.lib will be used
  __init ();

  // Call the user's main routine
  main ();

  goto loop;
}                               /* end _startup() */
Я же не говорю, что нельзя, я говорю, что не стоит оно того. Когда вы делаете асмовую вставку внутри функции, вы блокируете там (внутри этой функции) всякую оптимизацию кода компилятором.
Плюс ещё нюансы, что тестер указал.
Greg вне форума   Ответить с цитированием
Старый 12.01.2013, 21:54   #16
Ferrum-1827
Member
 
Регистрация: 07.12.2012
Сообщений: 32
Вес репутации: 100/23
Ferrum-1827 will become famous soon enoughFerrum-1827 will become famous soon enough
По умолчанию Re: Сдвиг с сохранением

Спасибо за замечания, пересмотрел в своей тестовой программе сдвига - банки не переключаются, заранее прошу прощения за "читабельный" формат кода...
Код:
$0005	$	_main:
;pic72.c,12 :: 		void main() org 5
;pic72.c,14 :: 		init();
$0005	$2066			CALL	_init
;pic72.c,15 :: 		ii=porta;
$0006	$0805			MOVF	PORTA, 0
$0007	$00A2			MOVWF	_ii
;pic72.c,16 :: 		while (1) {
$0008	$	L_main_0:
;pic72.c,18 :: 		for (aa=0;aa<8;aa++){
$0008	$01A3			CLRF	_aa, 1
$0009	$	L_main_2:
$0009	$3008			MOVLW	8
$000A	$0223			SUBWF	_aa, 0
$000B	$1803			BTFSC	STATUS, C
$000C	$2813			GOTO	L_main_3
;pic72.c,19 :: 		portc=ii;
$000D	$0822			MOVF	_ii, 0
$000E	$0087			MOVWF	PORTC
;pic72.c,20 :: 		asm{rlf   ii, W;
$000F	$0D22			RLF	ii, W
;pic72.c,21 :: 		rlf   ii, F; }
$0010	$0DA2			RLF	ii, F
;pic72.c,24 :: 		}
$0011	$	L_main_4:
;pic72.c,18 :: 		for (aa=0;aa<8;aa++){
$0011	$0AA3			INCF	_aa, 1
;pic72.c,24 :: 		}
$0012	$2809			GOTO	L_main_2
$0013	$	L_main_3:
;pic72.c,25 :: 		}
$0013	$2808			GOTO	L_main_0
;pic72.c,26 :: 		}
$0014	$2814			GOTO	$
Так что при использовании асм вставок буду контролировать, либо мастить сдвиг наиболее ближе к чтению переменной, чтобы в процессе выполнения программа не поменяла банк...
Ferrum-1827 вне форума   Ответить с цитированием
Старый 13.01.2013, 01:03   #17
Vlad&mir
Senior Member
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 1,720
Вес репутации: 4407/97
Vlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond repute
По умолчанию Re: Сдвиг с сохранением

А можно дать указание MikroC разместить ii в 0 банке?

У Вас перед сдвигом стоит:

portc=ii;

После этого оператора гарантированно будет установлен 0 банк.
Vlad&mir вне форума   Ответить с цитированием
Старый 13.01.2013, 13:06   #18
tester
Super Moderator
 
Аватар для tester
 
Регистрация: 28.02.2007
Возраст: 41
Сообщений: 3,577
Вес репутации: 4386/121
tester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond repute
По умолчанию Re: Сдвиг с сохранением

Цитата:
Сообщение от Vlad&mir Посмотреть сообщение
А можно дать указание MikroC разместить ii в 0 банке?
так сделать можно (кейворд absolute), но не нужно. Проблема того не стоит: ни выигрыша по скорости, ни выигрыша по объему (1 байт и 1 такт - это не выигрыш). Но зато получаем трудно читаемый, трудно модифицируемый, трудно сопровождаемый и трудно документируемый код.
tester вне форума   Ответить с цитированием
Старый 13.01.2013, 13:19   #19
Vlad&mir
Senior Member
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 1,720
Вес репутации: 4407/97
Vlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond repute
По умолчанию Re: Сдвиг с сохранением

Цитата:
Сообщение от tester Посмотреть сообщение
так сделать можно (кейворд absolute), но не нужно. Проблема того не стоит: ни выигрыша по скорости, ни выигрыша по объему (1 байт и 1 такт - это не выигрыш). Но зато получаем трудно читаемый, трудно модифицируемый, трудно сопровождаемый и трудно документируемый код.
Вы, безусловно, правы. Только душа противится такому уродству:
Код:
if (a&0x80)
{
a<<=1
a |=1;
}
else
a<<=1;
вместо этого изящества:
Код:
asm{rlf   ii, W;
    rlf   ii, F; }


Вообще говоря, программирование, это искусство. Программист - Автор. Каждый Автор сам определяет баланс между переносимостью программ, быстродействием, собственным удобством и т.д. и т.п. Некоторым нравятся "трюки" в программировании.

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

О "модульности" арифметики также стыдливо умалчивается.

Последний раз редактировалось Vlad&mir; 13.01.2013 в 13:39.
Vlad&mir вне форума   Ответить с цитированием
Старый 13.01.2013, 13:53   #20
tester
Super Moderator
 
Аватар для tester
 
Регистрация: 28.02.2007
Возраст: 41
Сообщений: 3,577
Вес репутации: 4386/121
tester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond repute
По умолчанию Re: Сдвиг с сохранением

Цитата:
Сообщение от Vlad&mir Посмотреть сообщение
Только душа противится такому уродству:
Код:
if (a&0x80)
{
a<<=1
a |=1;
}
else
a<<=1;
вместо этого изящества:
Код:
asm{rlf   ii, W;
    rlf   ii, F; }
Да вообще редкая задача. Но мне, например, больше приятно такое уродство:
Код:
a = (a << 1) + (a & 0x80? 1:0);
Цитата:
Вообще говоря, программирование, это искусство. Программист - Автор.
Я считаю программирование ремеслом. Программист - ремесленник
tester вне форума   Ответить с цитированием
Старый 13.01.2013, 14:00   #21
Vlad&mir
Senior Member
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 1,720
Вес репутации: 4407/97
Vlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond repute
По умолчанию Re: Сдвиг с сохранением

Цитата:
Сообщение от tester Посмотреть сообщение
Я считаю программирование ремеслом. Программист - ремесленник
Программисты бывают и такие и такие. Причем по коду сразу видно какой.

Забыл. Еще индусы бывают.

Некий Дональд Кнут тоже имеет свое мнение по этому поводу.

Последний раз редактировалось Vlad&mir; 13.01.2013 в 14:11.
Vlad&mir вне форума   Ответить с цитированием
Старый 13.01.2013, 14:23   #22
tester
Super Moderator
 
Аватар для tester
 
Регистрация: 28.02.2007
Возраст: 41
Сообщений: 3,577
Вес репутации: 4386/121
tester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond repute
По умолчанию Re: Сдвиг с сохранением

Цитата:
Сообщение от Vlad&mir Посмотреть сообщение
Некий Дональд Кнут тоже имеет свое мнение по этому поводу.
Если бы все программисты были как Кнут, или хотя бы стремились быть...

А так, не напомните его мнение? Давно держал эту книгу в руках. (Помню в институте удалось взять его в библиотеке, он был нарасхват и достать его было трудно. А сейчас лежит в Озоне, и я думаю, купить что ли для коллекции. Но читать уже не буду )
tester вне форума   Ответить с цитированием
Старый 13.01.2013, 20:07   #23
Vlad&mir
Senior Member
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 1,720
Вес репутации: 4407/97
Vlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond repute
По умолчанию Re: Сдвиг с сохранением

Цитата:
Сообщение от tester Посмотреть сообщение
Если бы все программисты были как Кнут, или хотя бы стремились быть...

А так, не напомните его мнение? Давно держал эту книгу в руках. (Помню в институте удалось взять его в библиотеке, он был нарасхват и достать его было трудно. А сейчас лежит в Озоне, и я думаю, купить что ли для коллекции. Но читать уже не буду )
Дональд Кнут, безусловно, считал программирование искусством, хотя выразился по этому поводу достаточно витиевато: "Мы должны постоянно стремиться превратить всякое искусство в науку: в процессе, мы улучшаем искусство".

А что касается программистов, по-мне хороший ремесленник лучше плохого художника от программирования.
Vlad&mir вне форума   Ответить с цитированием
Старый 13.01.2013, 22:13   #24
Ferrum-1827
Member
 
Регистрация: 07.12.2012
Сообщений: 32
Вес репутации: 100/23
Ferrum-1827 will become famous soon enoughFerrum-1827 will become famous soon enough
По умолчанию Re: Сдвиг с сохранением

Цитата:
Сообщение от tester Посмотреть сообщение
Но мне, например, больше приятно такое уродство:
Код:
a = (a << 1) + (a & 0x80? 1:0);
Интересная запись на С... я её понял так
a=(a<<1)+(a&0x80... а дальше смущаюсь, можно прокомментировать ?
Ferrum-1827 вне форума   Ответить с цитированием
Старый 13.01.2013, 22:30   #25
Vlad&mir
Senior Member
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 1,720
Вес репутации: 4407/97
Vlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond repute
По умолчанию Re: Сдвиг с сохранением

Цитата:
Сообщение от Ferrum-1827 Посмотреть сообщение
Интересная запись на С... я её понял так
a=(a<<1)+(a&0x80... а дальше смущаюсь, можно прокомментировать ?
http://lib-tex.narod.ru/prog/c/5/2.h...вные_выражения
Vlad&mir вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сдвиг в си andreizimma Вопросы начинающих 17 01.06.2012 13:58
Длинный сдвиг, как оптимальней? VaBo Продукция MICROCHIP 4 03.11.2010 10:35
Сдвиг в ассемблере для PIC24 hammer Продукция MICROCHIP 9 27.10.2010 10:45
Побитный сдвиг Specialist Вопросы начинающих 2 28.06.2010 19:15
Help! сдвиг бита влево в unsigned long глючит! Максим2008 Продукция MICROCHIP 2 05.05.2009 12:18


Часовой пояс GMT +3, время: 09:07.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot