Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

NCD оператор
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=9643
Страница 1 от 1

Автор:  StiV [ Пет Дек 30, 2011 1:01 pm ]
Заглавие:  NCD оператор

В PicBasic-a има оператор NCD, който не откривам в другите езици :? . Връща поредния номер на най-старшата единица (от 1 до 16), например:
B0 = NCD %01001000 ' Sets B0 to 7
Някой да има идея как може това да се реализира по друг начин без тоя оператор :?:

Автор:  ike [ Пет Дек 30, 2011 1:05 pm ]
Заглавие:  Re: NCD оператор

цикъл shift на ляво докато се появи 1-ца и изваждаш от 8 броя на итерациите в цикъла.

Автор:  tgi [ Пет Дек 30, 2011 1:09 pm ]
Заглавие:  Re: NCD оператор

В power:
cntlz rA,rB (count leading zeroes, source, destination - ),
в coldfire е пак нещо такова ама source/destination беше май все един регистър
задължително,
в 68020 до 060 беше

BFFF1 (или нещо подобно, bitfield find first one).

Основен оператор, без него сума основни неща отиват на кино като скорост.

Предполагам не питаш точно за тия му варианти де :D :D :D :D .

Автор:  StiV [ Пет Дек 30, 2011 1:35 pm ]
Заглавие:  Re: NCD оператор

Цитат:
цикъл shift на ляво докато се появи 1-ца и изваждаш от 8 броя на итерациите в цикъла.

Не става. Търсим най старшата единица, а не първата която се появи.

Автор:  michev [ Пет Дек 30, 2011 1:43 pm ]
Заглавие:  Re: NCD оператор

Точно както IKE ти го е написал.
Да не бъркаш ротацията на ляво с тази на дясно?
Ползвай RLF, следи Carry-то.

Автор:  Cekins [ Пет Дек 30, 2011 1:46 pm ]
Заглавие:  Re: NCD оператор

Е каква е разликата между най-старшата и първата която се появи в бит 7 при шифт лефт?

нещо от сорта:

while b7=0
byte<<1
count+1
end while

rezult=8-count

грубо написано на неизвестен език :)

Автор:  StiV [ Пет Дек 30, 2011 10:03 pm ]
Заглавие:  Re: NCD оператор

Да де, грешката е моя - чета ляво, пък мисля за дясно ... явно вече е време за отпуск :)
Благодаря за помощта, ще го пробвам.
Весела нова година на всички Изображение

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/