Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 22 kwi 2026, o 18:01


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 6 cze 2015, o 21:36 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 08 lis 2014
Posty: 13
Lokalizacja: KATOWICE
Pomógł: 0

Witam,

Problem polega na tym iż muszę liczbę typu 0b1111111111 podzielić w ten oto sposób
tab[0] = 0b11111111
tab[1] = 0b11000000
Już z dwie godziny myślę jak to rozwiązać ale nie skutecznie. Bardzo proszę o pomoc.

Pozdrawiam.

------------------------ [ Dodano po: 28 minutach ]

Wpadłem na taki pomysł 0b1111111111 MOD 100 wtedy daje mi 2 ostatni bity tej liczby czyli 11 wtedy zostaje mi liczba 0b11111111 i druga 0b11 teraz tylko zmienić ją na 0b11000000 naprzykład poprzez 0b11 * 0b1000000. Dobrze myślę?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 cze 2015, o 22:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lut 2013
Posty: 158
Lokalizacja: KTT
Pomógł: 1

Kolego można spróbować przesunięcia bitowego z jawnym rzutowaniem na liczbę 8-bitową:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


spróbuj czy zatrybi, ja bym szedł tym tropem

_________________
Gordon



Ostatnio edytowano 6 cze 2015, o 22:42 przez gordon10, łącznie edytowano 2 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 cze 2015, o 22:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

MrNew napisał(a):
Liczba 0b11111111 to liczba jednobajtowa.

Tak, ale liczba 0b1111111111 to liczba dwubajtowa.

Jeśli tab[0] i tab[1] są jednobajtowe to można by to zrobić tak
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 cze 2015, o 22:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Spróbuj tak:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


------------------------ [ Dodano po: 6 minutach ]

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 cze 2015, o 23:03 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 08 lis 2014
Posty: 13
Lokalizacja: KATOWICE
Pomógł: 0

jacekk232 napisał(a):
Jeśli tab[0] i tab[1] są jednobajtowe to można by to zrobić tak
Składnia: [ Pobierz ] [ Ukryj ]
język c
tab[0] = 0b1111111111;    //przepisz dolny bajt do tab[0]
tab[1] = (0b1111111111 & 0xFF00) << 6;    //przepisz górny bajt do  tab[1] i przesuń go o 6 miejsc w prawo
GeSHi



Najprostszy a zarazem najbardziej plastyczny bo dla innych liczb też działa :) (mój z dzieleniem też działa lecz ten kolegi bardziej optymalny). Dziękuje wszystkim za Pomoc :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 cze 2015, o 21:03 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Kolego Mokrowski, czy w taki sposób?

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Z użyciem kodu powyżej otrzymuję "rozbicie" uint16_t na dwa uint8_t (starszy i młodszy bajt).

Raymen napisał(a):

Problem polega na tym iż muszę liczbę typu 0b1111111111 podzielić w ten oto sposób
tab[0] = 0b11111111
tab[1] = 0b11000000



No ale co zrobić z tym przesunięciem bitowym?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO