Dziwne wartości

0

Witam chciałbym tylko zadać pytanie bo od dłuższego czasu mnie zastanawia czemu w niektórych tutorialach ludzie nadają liczbom takie wartości jak np 0x8000000.
Nie rozumiem po co taka wartość ?

0

0x80000000 to akurat najniższa wartość możliwa do przechowania w 32 bitowym signed int. Ale nie powinno się takich wartości hardkodować.

0

Nie rozumiem po co taka wartość?
Skąd mamy wiedzieć? ;-)
Wszystko zależy od kontekstu: jakim liczbom? gdzie te liczby są użyte?

0

znalazłem taką wartość w tutorialu jak zrobić klawiaturę ekranową,jednakże dalej nie rozumiem po co takie dziwaczne wartości zamiast tych zwykłych.

0

A ogólnie jest to zapis liczby w systemie szesnastkowym. Jeżeli operujesz na bitach w liczbie (np. przy komunikacji z WinAPI/sterownikami/dziwnymi urządzeniami albo korzystasz z Atrybutu Flag na enumie) zapis taki jest czytelniejszy niż dziesiątkowy.

0

Aha,a można gdzieś coś dokładniej w zakresie połączenia tego z WinApi poczytać?
Chciałbym wiedzieć na przyszłość jakich wartości tego typu kiedy stosować.

0

To jest tylko inny zapis liczby. 0x80000000 to dokładnie to samo co 2147483648.
Twoje pytanie jest zatem dość dziwne, bo pytasz kiedy używać 6 a kiedy 27.

http://pl.wikipedia.org/wiki/Szesnastkowy_system_liczbowy

0

Tego zapisu używasz wtedy gdy potrzebujesz zabawy na bitach.
Najpopularniejszym szeroko przyjętym zastosowaniem tego rozwiązania jest kodowanie kolorów. Każdą składową koloru koduje jeden bajt, więc 4 bajtowa liczba opisuje kolor ARGB. Do opisu 1 bajta potrzeba 2 liczb szesnastkowych. Teraz zapis FF00FF00 to jest jasnozielony (pierwsze 2 cyfry to alfa potem czerwony zielony i niebieski) a 88FF0000 to półprzeźroczysty czerwony te same kolory zapisane w systemie 10-tkowym to 4278255360 i 2298413056 - znacznie trudniej wyczuć jakie to kolory.

Taki zapis może być też wygodny gdy współpracujesz z urządzeniem które jest podłączone do portu szeregowego, wysyłasz do niego bajt danych, a to urządzenie interpretuje każdy jego bit jako włączenie/wyłączenie urządzenia do niego podpiętego (np. gniazdka elektrycznego). Wtedy także wygodniej jest stosować system szesnastkowy ponieważ system binarny łatwo się na niego przelicza.

0

Takich liczb w API zwykle się nie stosuje.
Możesz co najwyżej dostać taką liczbę jako wynik (status, adres pamięci itd).
W API powinieneś korzystać ze stałych zdefiniowanych w konkretnych bibliotekach.
Byłoby łatwiej na to odpowiedzieć gdybyś podał konkretny przykład o jaki pytasz.

0

http://msdn.microsoft.com/pl-pl/library/system.windows.forms.createparams.exstyle(v=vs.110).aspx

#define WS_POPUP __MSABI_LONG(0x80000000)

Hm.. Z tego co widze, to tam jest 0x08000000.
Tutaj masz liste: http://msdn.microsoft.com/en-us/library/windows/desktop/ff700543(v=vs.85).aspx

Ciekawsze jest, czemu ten pan nie uzyl nazwy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1