Skocz do zawartości

podział liczby binarnej


Pomocna odpowiedź

Napisano

mam mały problem potrzebuje podzielić liczbę binarną na dwie osobne wartości:

przykład 1100110011 na 11001 10011 , istnieje jakiś rejestry z komendą który odseparuje mi ciąg bina na dwie części.( nie chodzi mi sposób matematyczny )

help me 😉

Nie bardzo rozumiem jak chcesz to zrobić niematematycznie, ale osobiście zrobiłbym to mniej-więcej tak, że najpierw zmienną XY (do podzielenia) zapisałbym do krótszej Y, zastosowałbym przesunięcie bitowe (o tyle ile bitów chcemy 'obciąć') i zapisał do X.

Do tego służy logiczne AND. W C jest to operator & w basicu pewnie AND.

Wykonujesz x & maska i w wyniku dostajesz "wycięty" fragment liczby x.

Czyli:

1100110011 & 0000011111 = 0000010011

1100110011 & 1111100000 = 1100100000

A ja bym użył wskaźników 🙂 Na zmienną int ustawił bym wskaźnik char, przypisał wartość zmiennej pomocniczej a następnie przesunął wskaźnik.

nie chodzi mi sposób matematyczny

Chyba logiczny 😉 Do tego co napisał Elvis dokonujesz ewentualnego przesunięcia o 5 bitów bardziej znaczącej części i masz odseparowane tak jak chciałeś. Jeśli piszesz w asemblerze nie powinieneś mieć żadnych problemów z obsłużeniem tych działań.

w C użyłbym raczej do tego unii

zapisałbym wyraz jako zmienna 16 bitowa,
a odczytałbym jako dwie ośmiobitowe.

Jest to bardzo wygodne rozwiązanie i działa w obydwie strony.

Stosuję je np. przy zczytywaniu temperatury z czujnika DS18B20 (12-bitowego)

gdzie wartość całkowita jest na 8 starszych bitach, a 4 młodsze to część ułamkowa.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...