it-swarm-eu.dev

Proč je 2 ^ 16 „speciální“ číslo?

OK, cítím se hloupě, když se na to ptám - ale v Jeffově článku: Získání obrazovky rozhovoru s telefonem vpravo a původně uvedeno v 5 základních otázek na obrazovce telefon :

Neměli by na tebe hledět prázdně, když se zeptáte s 2 ^ 16. Je to zvláštní číslo. Měli by to vědět.

Chvíli jsem vývojář\softwarový inženýr\kódová opice\cokoli a nemyslím si, že jsem se s tím někdy setkal. Myslím, že určitě mohu spočítat binární hodnoty, které na nich provádějí základní operace, atd. Atd. Ale nevidím, co je „zvláštní“ na této hodnotě.

49
javamonkey79

(216 - 1) nebo 65535 nebo 0xFFFF nebo „64k“ je maximální hodnota 2 bajty. Dlouho používané procesory 16bitová architektura a OS byly rovněž založeny na 16bitových operacích a „slova“ . Existovaly 16bitové příkazy a 16bitové adresy paměti. Mnoho systémů/kompilátorů stále používá 16 bitů pro celá čísla.

(216 - 1) je zvláštní, protože je to největší číslo, které může 16bitové (nepodepsané) číslo pojmout, a největší adresa paměti, ke které má 16bitová architektura přístup.

82

Z celého těla z článku Steve Yegge,

Kandidáti by měli vědět, jaké jsou bity a bajty. Měli by být schopni počítat binárně; např. měli by vám být schopni říct, co je 2 ^ 5 nebo 2 ^ 10, v desítkové soustavě. Neměli by na tebe hledět prázdně, když se zeptáte s 2 ^ 16. Je to zvláštní číslo. Měli by to vědět.

Byl jsem vyhozen z kousku, který jste uvedli v otázce; Znělo to, že kandidát by měl být schopen popsat jeho význam, ale v kontextu říká, že kandidáti by měli vědět, mimo horní část jejich hlavy, co desetinná konverze 216 je.

Význam tohoto je, že protože my lidé stále používáme pro počítání desetinné čárky, zejména v našich hlavách (ve většině případů), potřebujeme znát hrubé kapacity společných bytových bloků, které používáme pro ukládání, paměť nebo dokonce kódování znaků. Protože bajt je 8 bitů, nejčastější jsou 8, 16, 24, 32 a 64.

V současné době bych řekl 232 je nejčastěji se vyskytující kapacita, se kterou se vývojář zabývá. Mám podezření na vývojáře, kteří to nevědí 232 je zhruba 4 miliardy (maximální hodnota ~ 2 miliardy, pokud jsou podepsány), protože to znamená, že se nikdy neobtěžovali zjistit, kolik záznamů lze uložit v jejich databázích, které používají 32bitové ints pro primární klíče. , nebo pokud bude třeba starý kód používající 32bitové ints pro ID, data atd., znovu upravit na 64bitové.1

216 je celková kapacita Java short. (Celkový počet mezi -215 a 215-1)

Vývojář by měl vědět, co je to 8-bit. Mezi mnoho běžných použití je ASCII kódování znaků).

Neočekával bych, že by programátor věděl 214 nebo 218 vůbec, ale pravděpodobně bych očekával, že vědí 216 protože se jedná o velmi často se vyskytující číslo a dostatečně krátké číslo (65536), aby se snadno zapamatovalo celé číslo.


1: Pokud procházíte žebříčky žebříčků Call of Duty: MW2 nebo iPhone Game Center, často uvidíte nahoře podvodníky s vysokými skóre skóre 2 147 483 647, což je 231-1, maximální hodnota podepsaného 232 celé číslo.

58
Nicole

Jediný důvod, který vidím, pokud jde o 216 jako „speciální“ je to proto, že je to více než nejvyšší celé číslo, které můžete uložit do jediného registru na 16bitovém operačním systému.

Podobně byste mohli použít stejnou logiku na 232 a 32 bitové operační systémy.

Než budu moci říci, zda to byl významný kus znalostí nebo ne, potřeboval bych vědět více kontextu.

3
ChrisF