OK, czuję się głupio pytając o to - ale w artykule Jeffa: Właściwy ekran telefonu podczas rozmowy kwalifikacyjnej i pierwotnie zadane w 5 podstawowych pytaniach na ekranie telefonu :
Nie powinni patrzeć na ciebie tępo, kiedy pytasz z 2 ^ 16 jest. To specjalny numer. Powinni to wiedzieć.
Od jakiegoś czasu jestem programistą \ inżynierem oprogramowania \ małpką kodową \ i czymkolwiek, i nie sądzę, żebym się na to natknął. Mam na myśli, że z pewnością mogę liczyć wartości binarne, wykonuję na nich podstawowe operacje itp. Ale nie widzę, co jest „specjalnego” w tej wartości.
2^16.1
to także potęga 2, ale nic specjalnego. To samo dotyczy2^0
.2**0
jest1
, co w rzeczywistości jest bardzo specjalną liczbą;) Ale tak, generalnie zajmujemy się potęgami dwóch, gdzie wykładnik jest dodatnią liczbą całkowitą.Odpowiedzi:
(2, 16 - 1) lub 65535, lub
0xFFFF
czy "64k" jest wartością maksymalną z 2 bajtów. Przez długi czas procesory korzystały z architektury 16-bitowej, a systemy operacyjne były również oparte na 16-bitowych operacjach i „słowach” . Były 16-bitowe polecenia i 16-bitowe adresy pamięci. Wiele systemów / kompilatorów nadal używa 16 bitów dla liczb całkowitych.Tak więc (2 16-1 ) jest wyjątkowy, ponieważ jest to największa liczba, jaką może pomieścić 16-bitowa (niepodpisana) liczba całkowita i największy adres pamięci, do którego może uzyskać dostęp architektura 16-bitowa.
źródło
Z całego ciała z artykułu Steve'a Yegge,
Wyrzucono mnie z fragmentu, który zacytowałeś w pytaniu; brzmiało to tak, jakby kandydat powinien był w stanie opisać jego znaczenie, ale w kontekście mówi, że kandydaci powinni wiedzieć z góry, jaka jest konwersja dziesiętna 2 16 .
Znaczenie tego jest takie, że ponieważ my, ludzie, nadal używamy dziesiętnych do zliczania, szczególnie w naszych głowach (w większości przypadków), musimy znać przybliżone pojemności wspólnych bloków bajtów , których używamy do przechowywania, pamięci, a nawet kodowania znaków. Ponieważ bajt ma 8 bitów, najczęściej są to 8, 16, 24, 32 i 64.
W tej chwili powiedziałbym, że 2 32 to najczęściej występująca pojemność, z którą ma do czynienia deweloper. Jestem podejrzliwy w stosunku do programistów, którzy nie wiedzą, że 2 32 to około 4 miliardy (maksymalna wartość ~ 2 miliardy, jeśli podpisano), ponieważ oznacza to, że nigdy nie zadali sobie trudu, aby dowiedzieć się z grubsza, ile rekordów można przechowywać w ich bazach danych, które używaj 32-bitowych
int
s dla kluczy podstawowych, lub gdy stary kod używający 32-bitowychint
s dla identyfikatorów, dat itp. będzie wymagał refaktoryzacji do wersji 64-bitowej. 12 16 to całkowita pojemność Javy
short
. (Łączna liczba między -2 15 a 2 15 -1)Deweloper powinien na pamięć wiedzieć, co to jest 8-bit. Jednym z wielu powszechnych zastosowań jest kodowanie znaków ASCII.
Nie spodziewałbym się, że programista w ogóle zna 2 14 lub 2 18 , ale prawdopodobnie oczekiwałbym, że znają 2 16, ponieważ jest to bardzo często występująca liczba i wystarczająco krótka liczba (65536), aby łatwo zapamiętać pełny numer.
1: Jeśli przejrzysz tabele liderów Call of Duty: MW2 lub iPhone Game Center, często zobaczysz oszustów na szczycie z wysokimi wynikami w wysokości 2 147 483 647, co oznacza 2 31 -1, czyli maksymalną wartość ze znakowanej liczby całkowitej 2 32 .
źródło
Jedynym powodem, dla którego widzę 2 16 jako „specjalne”, jest to, że jest to jedna więcej niż najwyższa liczba całkowita, którą można zapisać w jednym rejestrze w 16-bitowym systemie operacyjnym.
Podobnie możesz zastosować tę samą logikę do 2 32 i 32-bitowych systemów operacyjnych.
Musiałbym wiedzieć więcej kontekstu dla pytania, zanim będę mógł powiedzieć, czy to znacząca wiedza, czy nie.
źródło