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ść ?
0x80000000 to akurat najniższa wartość możliwa do przechowania w 32 bitowym signed int. Ale nie powinno się takich wartości hardkodować.
Nie rozumiem po co taka wartość?
Skąd mamy wiedzieć? ;-)
Wszystko zależy od kontekstu: jakim liczbom? gdzie te liczby są użyte?
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.
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.
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ć.
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.
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.
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.
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.