OK, saya merasa bodoh menanyakan hal ini - tetapi dalam artikel Jeff: Mendapatkan Layar Telepon Wawancara dengan Benar dan awalnya dinyatakan dalam 5 pertanyaan layar ponsel yang penting :
Mereka seharusnya tidak menatap kosong pada Anda ketika Anda bertanya dengan 2 ^ 16 adalah. Ini nomor khusus. Mereka harus mengetahuinya.
Saya telah menjadi pengembang \ insinyur perangkat lunak \ kode monyet \ apa pun untuk sementara waktu sekarang, dan saya tidak berpikir saya pernah menemukan ini. Maksudku, aku pasti bisa menghitung nilai biner melakukan operasi dasar pada mereka, dll, dll. Tapi aku tidak melihat apa yang "istimewa" tentang nilai ini.
2^16.1
juga kekuatan 2, tapi tidak ada yang istimewa. Sama untuk2^0
.2**0
adalah1
, yang notabene nomor yang sangat khusus;) Tapi ya, kita umumnya hanya peduli dengan kekuatan dua di mana eksponen adalah bilangan bulat positif.Jawaban:
(2 16 - 1) atau 65535 atau
0xFFFF
atau "64k" adalah nilai maksimum 2 byte. Untuk waktu yang lama CPU menggunakan arsitektur 16-bit dan OS juga didasarkan pada operasi 16-bit dan "kata-kata" . Ada perintah 16-bit dan alamat memori 16-bit. Banyak sistem / kompiler masih menggunakan 16 bit untuk integer.Jadi, (2 16 - 1) adalah istimewa karena ini adalah angka terbesar yang dapat disimpan oleh integer 16-bit (tidak ditandatangani) dan alamat memori terbesar yang dapat diakses oleh arsitektur 16-bit.
sumber
Dari seluruh artikel Steve Yegge,
Saya terlempar dari bagian yang Anda kutip dalam pertanyaan; kedengarannya seperti seorang kandidat harus dapat menggambarkan signifikansi itu, tetapi dalam konteksnya dia mengatakan bahwa para kandidat harus tahu, di atas kepala mereka, apa konversi desimal 2 16 itu.
Pentingnya hal ini adalah karena kita manusia masih menggunakan desimal untuk menghitung, terutama di kepala kita (dalam kebanyakan keadaan), kita perlu mengetahui kapasitas kasar dari blok byte umum yang kita gunakan untuk penyimpanan, memori, atau bahkan pengkodean karakter. Karena byte adalah 8 bit, yang paling umum adalah 8, 16, 24, 32, dan 64.
Pada saat ini saya akan mengatakan 2 32 adalah kapasitas yang paling umum terjadi dengan pengembang. Saya curiga pada pengembang yang tidak tahu bahwa 2 32 kira-kira 4 miliar (nilai maksimum ~ 2 miliar jika ditandatangani), karena itu berarti mereka tidak pernah repot-repot mencari tahu berapa banyak catatan yang dapat disimpan dalam database mereka yang gunakan 32-bit
int
s untuk kunci utama, atau ketika kode lama menggunakan 32-bitint
untuk ID, tanggal, dll. akan perlu di refactored menjadi 64-bit. 12 16 adalah total kapasitas Jawa
short
. (Total angka antara -2 15 dan 2 15 -1)Seorang pengembang harus hafal 8-bit. Di antara banyak penggunaan umum adalah pengkodean karakter ASCII.
Saya tidak akan mengharapkan seorang programmer tahu 2 14 atau 2 18 sama sekali, tapi saya mungkin akan berharap bahwa mereka tahu 2 16 karena ini adalah angka yang sangat umum dan angka yang cukup pendek (65536) untuk dengan mudah mengingat angka penuh.
1: Jika Anda meramban papan peringkat Call of Duty: MW2 atau iPhone Game Center Anda akan sering melihat curang di atas dengan nilai skor tinggi 2.147.483.647, yang merupakan 2 31 -1, nilai maksimum bilangan bulat 2 32 yang ditandatangani .
sumber
Satu-satunya alasan saya dapat melihat untuk menganggap 16 sebagai "istimewa" adalah karena ini adalah satu lebih dari bilangan bulat tertinggi yang dapat Anda simpan dalam satu register pada sistem operasi 16 bit.
Demikian pula Anda dapat menerapkan logika yang sama untuk 2 sistem operasi 32 dan 32 bit.
Saya perlu tahu lebih banyak konteks untuk pertanyaan sebelum dapat mengatakan apakah itu adalah pengetahuan yang signifikan atau tidak.
sumber