Qbasic i odwracanie bitów

Forum dotyczące ogólnie pojętego programowania - algorytmów, struktur danych, narzędzi programistycznych, itp - głównie w kontekście komputerów PC.
Awatar użytkownika
grysek67
Użytkownik
Posty: 315
Rejestracja: 27 cze 2007, 6:34
Lokalizacja: Limanowa
Kontakt:

Qbasic i odwracanie bitów

Post autor: grysek67 » 23 maja 2008, 16:01

Witam
Jak zanegować bity danego bajtu w Qbasic, jest tam operator "NOT" lecz on nie działa i Qbasic wyrzuca błąd "end-of-statement" inne operatory działają poprawnie... Niewiem może mam za starą wersje tego programu?? :sad: Prosze o pomoc

ZbeeGin

Post autor: ZbeeGin » 23 maja 2008, 17:55

Wystarczy skorzystać z operacji XOR z bajtem w którym są same jedynki.

Awatar użytkownika
grysek67
Użytkownik
Posty: 315
Rejestracja: 27 cze 2007, 6:34
Lokalizacja: Limanowa
Kontakt:

Post autor: grysek67 » 23 maja 2008, 19:03

Dzieki :smile: to po co w takim razie jest operator NOT skoro nie działa, aha i czy można w Qbasicu wpisać postać cyfry za pomocą kodu binarnego np. &B11111111??

ZbeeGin

Post autor: ZbeeGin » 23 maja 2008, 19:33

NOT to negacja ale nie bitów w bajcie tylko wartości logicznych w warunkach.

Niestety wartości binarnych QBasic nie przyjmujue. Można użyć notacji hex: &HFF& lub ósemkowej: &o377.
Ostatnio zmieniony 23 maja 2008, 19:53 przez ZbeeGin, łącznie zmieniany 1 raz.

Awatar użytkownika
grysek67
Użytkownik
Posty: 315
Rejestracja: 27 cze 2007, 6:34
Lokalizacja: Limanowa
Kontakt:

Post autor: grysek67 » 23 maja 2008, 19:52

Dzięki serdeczne :smile: mam jescze jedno pytanie odnośnie Qbasica a mianowicie czy jak napisze

Kod: Zaznacz cały

For x = 1 to 250000 : next x
to przy procesorze 250Mhz czas oczekiwania będzie wynosił 1 sekundę??

ZbeeGin

Post autor: ZbeeGin » 23 maja 2008, 19:53

Nie. Ale możesz skorzystać z polecenia WAIT.

Awatar użytkownika
grysek67
Użytkownik
Posty: 315
Rejestracja: 27 cze 2007, 6:34
Lokalizacja: Limanowa
Kontakt:

Post autor: grysek67 » 23 maja 2008, 19:57

Czy jak wykorzystam to polecenie to będzie to dokładna sekunda??

Dzięki i pozdrawiam :wink:

ZbeeGin

Post autor: ZbeeGin » 24 maja 2008, 6:50

NIe będzie to ze 100% dokładnością jedna sekunda. Licznik w komputerze też ma jakąś skończoną rozdzielczość.

Awatar użytkownika
grysek67
Użytkownik
Posty: 315
Rejestracja: 27 cze 2007, 6:34
Lokalizacja: Limanowa
Kontakt:

Post autor: grysek67 » 24 maja 2008, 8:30

To w takim razie jak napisać program aby odmierzał równą sekundę?? A co do polecenia WAIT to Helpie od qbasica pisze że trzeba podać adres portu bo to chyba jest opóżnienie dla portu a nie wykonywanych operacji :?:

ZbeeGin

Post autor: ZbeeGin » 24 maja 2008, 11:53

To w takim razie jak napisać program aby odmierzał równą sekundę??
Pewnych rzeczy się nie da przeskoczyć. Sekunda w wykonaniu QBasic-a nie jest idealna, ale znośna.
grysek67 pisze:A co do polecenia WAIT to Helpie od qbasica pisze że trzeba podać adres portu bo to chyba jest opóżnienie dla portu a nie wykonywanych operacji
Być może. Spróbuj zatem polecenia SLEEP {ile sekund}. Przy czym to polecenie się przerwie jak naciśniesz jakiś klawisz.

Awatar użytkownika
grysek67
Użytkownik
Posty: 315
Rejestracja: 27 cze 2007, 6:34
Lokalizacja: Limanowa
Kontakt:

Post autor: grysek67 » 24 maja 2008, 19:11

ZbeeGin pisze: Sekunda w wykonaniu QBasic-a nie jest idealna, ale znośna
Ale gdyby tak odczytać sekundę z zegara systemowego, wystarczyłoby znać adres tego urządzenia :neutral: Tylko jakiego polecenia użyć aby odczytać z tego urządzenia?? bo po uzyciu polecenia INP wyskakują same dziwne rzeczy nie mające niczego wspólnego z odmierzaniem czasu :wink:

ZbeeGin

Post autor: ZbeeGin » 24 maja 2008, 19:22


Awatar użytkownika
joon
Użytkownik
Posty: 2076
Rejestracja: 30 cze 2007, 22:56
Lokalizacja: Kraków, Przemyśl, Warszawa
Kontakt:

Post autor: joon » 24 maja 2008, 19:57

Przerwanie zegarowe w PCetach pojawia się 18.2 razy na sekundę, ciężko to wykorzystać we własnym programie. Kiedyś w Pascalu próbowałem ale za bardzo nie wyszło :/. Istnieje jeszcze inna metoda ale wymaga asemblera, na jakimś forum znalazłem metodę ze zliczeniem cykli zegarowych ale brakowało komentarzy a asembler do czarna magia dla mnie.

Awatar użytkownika
grysek67
Użytkownik
Posty: 315
Rejestracja: 27 cze 2007, 6:34
Lokalizacja: Limanowa
Kontakt:

Post autor: grysek67 » 25 maja 2008, 7:43

Aha już wszystko jest już w miare jasne :wink: tylko znowu nie wiem jednej rzeczy a mianowicie jak w basicu przekonwertować BCD na DEC? bo w helpie nie mogłem się doszukać a i w necie nie mogłem nic o tym znaleźć :cry:

ZbeeGin

Post autor: ZbeeGin » 25 maja 2008, 7:50

A sam nie potrafisz wymyśleć? Czym jest BCD? Jak weźmiesz starszą połówkę bajtu i pomnożysz przez 10 i dodasz młodszą to co otrzymasz?

ODPOWIEDZ