W danym programie poniżejCo oznacza 0xFE w programie C?
void main()
{
int x=0xFE;
int y=0xF3;
.....
}
Jakie wartości są przypisywane przez x=0xFE
i y=0xF3
? Co oznacza 0x
?
W danym programie poniżejCo oznacza 0xFE w programie C?
void main()
{
int x=0xFE;
int y=0xF3;
.....
}
Jakie wartości są przypisywane przez x=0xFE
i y=0xF3
? Co oznacza 0x
?
Zapisanie wartości za pomocą 0x
przed oznacza, że jest napisane w hexadecimal notation, gdzie numery 0-9 i dodatkowy "numer" AF są używane do uzyskania systemu liczbowego z podstawą 16. Dużą zaletą tego jest to, że każdy szesnastkowy cyfra reprezentuje dokładnie 4 bity.
0xFE = 254
0xF3 = 243
więc x = 254 i y = 243.
jaka wartość zostanie przypisana w X i Y? – Nitin
@downvoter: wyjaśnij. –
@Nitin: odpowiedź brzmi: x zostanie przypisane 254, y zostanie przypisane 243. '0xFE' i' 254' mają dokładnie taką samą liczbę, tyle że '0xFE' jest zapisem szesnastkowym, a' 254' jest zapisem dziesiętnym . IOW, '0xFE' to po prostu inny sposób zapisu' 254'. Więcej tutaj: http://en.wikipedia.org/wiki/Hexadecimal –
Wartości są w kodzie szesnastkowym, ponieważ są one poprzedzone przez identyfikator 0x. Aby przekonwertować wartości, można użyć kalkulatora komputerowego w trybie programisty lub google. http://screensnapr.com/v/aQEPYk.png
Czy nikt już nie bazuje na 10 konwersji z ołówkiem i papierem? :) –
Nikt już tego nie robi w ich głowie? To całkiem proste dla 2-3 cyfr, jeśli znasz wielokrotności 16 ... –
@R: Ok, szybkie, bez oszukiwania - co to jest 0x0D92 w systemie dziesiętnym? –
Numery można reprezentować na różne sposoby. W języku C można używać wartości dziesiętnych (na przykład 243), ósemkowej (na przykład 0363) lub szesnastkowej (0xF3).
Jeśli piszesz 243, to znaczy
243 = 2*10^2 + 4*10^1 + 3*10^0 = 2*100 + 4*10 + 3 = 243
gdzie ^
oznacza "moc". Oznacza to, że nasze normalne liczby to 10 lub dziesiętnie. Szesnastkowy używa bazy 16, a cyfry to ABCDEF
, gdzie 0 = 0, ... 9 = 9, A = 10, B = 11, ... F = 15. Zatem 243 można również zapisać jako
0xF3 = 15*16^1 + 3*16^0 = 15*16 + 3 = 243
To właśnie widzisz. Innymi słowy, 0xF3 to po prostu inny sposób zapisu 243, a 0xFE to inny sposób zapisu 254 (15 * 16 + 14 = 254).
Zaletą jest to, że każda cyfra szesnastkowa reprezentuje 4 bity, więc 2 cyfry szesnastkowe mogą być używane do wyświetlania bajtu. Jeśli wiesz, że 0x0 to 0000 w binarnym i tak dalej, aż do 0xF, czyli 1111 w binarnym, doświadczony użytkownik może łatwo "zobaczyć" bity w bajcie.
FWIW, ósemkowy jest w bazie 8, więc jedyne cyfry to. Zawsze uważałem, że jest to trochę niewygodne w użyciu.
Uhm .. [254] (http://en.wikipedia.org/wiki/254_%28number%29) i [243] (http://en.wikipedia.org/wiki/243_%28number%29)? – cnicutar
moja pragmatyczna odpowiedź brzmi: użyj 'printf' :) –