Отговори на тема  [ 15 мнения ] 
Логическо деление 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пет Дек 07, 2007 1:21 pm
Мнения: 31
Местоположение: Varna
Мнение Логическо деление
Здравейте. Тъй като никаде не срещнах инструкция с която се извършва логическо деление при програмиране на PIC микроконтролер, реших да попитам как става. Искам да разделя 8 битово число от даден регистър на 2 и резултата да запиша в W. Моля Ви, помагаите. Благодаря предварително!


Пон Мар 03, 2008 5:35 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Юли 22, 2006 9:50 pm
Мнения: 1638
Мнение 
За да разделиш на 2 преместваш един разряд на дясно.
Примерно имаш в регистъра 0b00001000 (0x08)
Премествайки веднъж на дясно ->0b00000100 (0x04)
Премествайки веднъж на дясно ->0b00000010 (0x02)
И така ..... А справка в Гугъла направи ли ?


Пон Мар 03, 2008 6:26 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Чет Дек 02, 2004 7:22 pm
Мнения: 140
Мнение 
Имаш предвид въртене на дясно през С ли?
rrf (reg),w
Аритметичното, трябва да нулираш С на всяко врътване.


Пон Мар 03, 2008 6:30 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пет Дек 07, 2007 1:21 pm
Мнения: 31
Местоположение: Varna
Мнение 
Благодаря за помоща, сега вече ми е ясно как става. :) Ами гледах в Гугъл, но нищо не намерих по въпроса.


Пон Мар 03, 2008 7:03 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Яну 30, 2006 2:48 am
Мнения: 1248
Местоположение: София
Мнение 
Nikolay_90 написа:
Благодаря за помоща, сега вече ми е ясно как става. :) Ами гледах в Гугъл, но нищо не намерих по въпроса.

Не ти трябва Гугъл, трябва да си спомниш, какво си учил по аритметика (двоична!), или ако не си, да наваксаш бързичко :(


Пон Мар 03, 2008 9:44 pm
Профил WWW
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пет Дек 07, 2007 1:21 pm
Мнения: 31
Местоположение: Varna
Мнение 
Проблема е, че не съм учил двоична аритметика. Електрониката ми е хоби доста отдавна, от скоро се занимавам и с микроконтролери. :)
П.С. Извинявам се за оффтопика


Пон Мар 03, 2008 10:32 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Яну 30, 2006 2:48 am
Мнения: 1248
Местоположение: София
Мнение 
Nikolay_90 написа:
Проблема е, че не съм учил двоична аритметика. Електрониката ми е хоби доста отдавна, от скоро се занимавам и с микроконтролери. :)
П.С. Извинявам се за оффтопика

Никога не е късно да започнеш.
http://mcu-bg.com/mcu_site/viewtopic.php?t=1230


Вто Мар 04, 2008 9:32 pm
Профил WWW
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пет Дек 07, 2007 1:21 pm
Мнения: 31
Местоположение: Varna
Мнение 
Syrius-B написа:
Никога не е късно да започнеш.

Прав си. :) След 8-ми клас не можах да вляза в електротехникума със специалността която исках, но въпреки това не спирам да се занимавам с електроника защото това ми е мечтата. С микроконтролери се занимавам едва от 4-5 месеца. Сега съм почти на 18 години и след като завърша училище ще се постарая да вляза в Техническия университет със специалност която се занимава с нещо такова. :)
Благодаря за линка свързан с двоичната аритметика.


Сря Мар 05, 2008 5:31 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Пет Юни 29, 2007 10:59 pm
Мнения: 113
Мнение 
И аз за протокола... Това не е "логическо" деление. Логически може да разделим на 7 магарета 3 снопа суха люцерна :idea: . Това си е чисто целочислено деление на дадена степен на 2 :wink:


Сря Мар 05, 2008 8:50 pm
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пет Дек 07, 2007 1:21 pm
Мнения: 31
Местоположение: Varna
Мнение 
В някой книги пише "логическо умножение", "логическо събиране"... и аз помислих, че и делението е логическо :oops:


Сря Мар 05, 2008 9:11 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Чет Дек 02, 2004 7:22 pm
Мнения: 140
Мнение 
Логическо преместване наляво или надясно е когато битът, който излиза, пак влиза от другата страна, така наречено rotate left / right или logical shift left / right

arithmetical shift left / right е когато на свободното място влизат нули, такова въртене arithmetical shift left / right е точно умножение / деление по основата на бройната система - в случая "2". Също както ако преместим 25 веднъж наляво - получаваме 250 или умножение по основата - "10" при десетична бройна система.

в някои книги логическото преместване може и се казва логическо умножение, за мене не е много вярно, но не мисля че е голям проблем, важното е да знаеш кое какво е и как да го използваш!


Чет Мар 06, 2008 12:55 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Юни 05, 2006 1:48 pm
Мнения: 4906
Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
Мнение 
Yanek написа:
И аз за протокола... Това не е "логическо" деление. Логически може да разделим на 7 магарета 3 снопа суха люцерна :idea: . Това си е чисто целочислено деление на дадена степен на 2 :wink:

много аграрно казано ;) но точно :)

_________________
... ако трети ден не ти се работи... това означава, че е сряда !


Чет Мар 06, 2008 2:29 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Пон Фев 21, 2005 2:14 pm
Мнения: 191
Местоположение: Varna
Мнение 
stanleyhacker написа:
Логическо преместване наляво или надясно е когато битът, който излиза, пак влиза от другата страна, така наречено rotate left / right или logical shift left / right

arithmetical shift left / right е когато на свободното място влизат нули, такова въртене arithmetical shift left / right е точно умножение / деление по основата на бройната система - в случая "2". Също както ако преместим 25 веднъж наляво - получаваме 250 или умножение по основата - "10" при десетична бройна система.

в някои книги логическото преместване може и се казва логическо умножение, за мене не е много вярно, но не мисля че е голям проблем, важното е да знаеш кое какво е и как да го използваш!


Прегледай някой Instruction Set, за да си опресниш понятията.
ROL и LSL (ROR и LSR) са различни неща.
Не си прав за ASR. Там най-старшия бит остава непроменен, за да се запази знака.

Логическото събиране и умножение са понятия от булевата алгебра, по известни като AND и OR.

@Nikolay_90
Наистина е добре да прочетеш малко за двоична аритметика и логически операции. И с няколко примера ще ти се изяснят нещата.

_________________
Шанс едно на милион, обикновено се случва девет от десет пъти.


Чет Мар 06, 2008 3:59 pm
Профил ICQ
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Чет Дек 02, 2004 7:22 pm
Мнения: 140
Мнение 
:oops: Да, май малко съм ги забравил тия неща. ASL беше като LSL, обаче не се сещам защо? (старшия бит не трябва пак да остане същия или се бъркам нещо?)


Чет Мар 06, 2008 6:23 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Дек 14, 2004 1:31 pm
Мнения: 3849
Мнение 
@stanleyhacker,
Логическо преместване наляво или надясно не е еквивалентно на rotate.
При Logical Shift Left и Logical Shift Right имаме запьлване на LSB, сьответно на MSB с 0-и.
При Rotate Left, LSB получава предходното MSB.
При Rotate Right, MSB получава предходното LSB. Има и друг вариант Rotate Left/Rotate Right trough Carry, кьдето се вьрти през Carry Flag-a.
Arithmetical Shift Left е еквивалентно на Logical Shift Left.
Arithmetical Shift Right имаме когато MSB bit-а запьлва постепенно всички позиции от ляво на дясно при такт.

Това е от гледна точка на дигиталния дизайн. От гледна точка на информатиката нещата са по-сложни. Каква математическа операция бива изпьлнена зависи от начина на предстаняве на числата: one's complement, two's complement, signed magnitude, fixed-point, floating-point и т.н.
Не случайно много компилатори тьлкуват ASL по различен начин.


Чет Мар 06, 2008 8:38 pm
Профил WWW
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 15 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни