-
wygląda dobrze (zakładając, że malloc(5)
alokuje 5 bajtów, a nie np. 8-bajtowy blok, co jest możliwe)
-
poproście prowadzącego, aby używał normalnych słów, jak biały człowiek. Zgaduję, że cieńko- i grubokońcówkowe mają być odpowiednikami little- i big-endian, ale które którego nie zamierzam zgadywać.
Dla 1-bajtowego char
to bez różnicy, więc wartość to 7 w obu przypadkach
2-bajtowy short
ma bajty (od niższego adresu) 0x05 0x06
little endian - 0x605 = 1541
big endian - 0x506 = 1286
4-bajtowy int
ma bajty 0x01 0x02 0x03 0x04
czyli little endian to 0x04030201 = 67305985
a big endian to 0x01020304 = 16909060
- zadanie jest niepoprawnie sformułowane. Jest podpowiedź o zakresach wartości liter w ASCII, ale nie ma nigdzie informacji, że ASCII jest używane. Ponadto nie wiadomo w jakim systemie liczbowym zapisane jest
66
.
Jeśli base 10:
Można przewrotnie odpowiedzieć, że w EBCDIC wartość 66 nie ma reprezentacji znakowej.
A zakładając ASCII:
big endian:
jako int
kolejne bajty to 0x42 0x00 0x00 0x00, czyli 0x42000000, czyli 1107296256
jako short
kolejne bajty to 0x42 0x00 czyli 0x4200 czyli 16896
jako char*
kolejne bajty to 0x42 0x00 0x00 0x00, wypisane zostanie "B" (zakładając ASCII, chociaż zadanie w żaden sposób o takim założeniu nie mówi)
little endian:
jako int
kolejne bajty to 0x42 0x00 0x00 0x00, czyli 0x42 , czyli 66
jako short
kolejne bajty to 0x42 0x00 czyli 0x42 czyli 66
jako char*
kolejne bajty to 0x42 0x00 0x00 0x00, wypisane zostanie "B" (zakładając ASCII, chociaż zadanie w żaden sposób o takim założeniu nie mówi)
Jeśli base 16:
Można przewrotnie odpowiedzieć, że w EBCDIC wartość 66 nie ma reprezentacji znakowej.
A zakładając ASCII:
big endian:
jako int
kolejne bajty to 0x66 0x00 0x00 0x00, czyli 0x66000000, czyli 1711276032
jako short
kolejne bajty to 0x66 0x00 czyli 0x6600 czyli 26112
jako char*
kolejne bajty to 0x66 0x00 0x00 0x00, wypisane zostanie "f" (zakładając ASCII, chociaż zadanie w żaden sposób o takim założeniu nie mówi)
little endian:
jako int
kolejne bajty to 0x66 0x00 0x00 0x00, czyli 0x66, czyli 102
jako short
kolejne bajty to 0x66 0x00 czyli 0x66 czyli 102
jako char*
kolejne bajty to 0x66 0x00 0x00 0x00, wypisane zostanie "f" (zakładając ASCII, chociaż zadanie w żaden sposób o takim założeniu nie mówi)