it-swarm.asia

2 ^ 16 neden "özel" bir sayıdır?

Tamam, bunu sormak aptal hissediyorum - ama Jeff'in makalesinde: Röportaj Telefon Ekranı Doğru Başlarken ve başlangıçta 5 temel telefon ekranı sorus :

2 ^ 16 ile sormak size boş bakmak gerekir. Bu özel bir sayı. Bilmeliler.

Bir süredir geliştirici\yazılım mühendisi\kod maymun\oldum ve bununla karşılaştığımı hiç sanmıyorum. Demek istediğim, ikili değerler, vb. Üzerinde temel işlemler yaparlar. Kesinlikle bu değer hakkında "özel" olanı görmüyorum.

49
javamonkey79

(216 - 1) veya 65535 veya 0xFFFF veya "64k", maksimum 2 bayt değeridir. Uzun süredir kullanılan CPU'lar 16-bit mimari ve OS'ler de 16-bit işlemlere ve "kelimeler" dayalıydı. 16 bit komutlar ve 16 bit bellek adresleri vardı. Birçok sistem/derleyici hala tamsayılar için 16 bit kullanır.

Yani, (216 - 1) özeldir, çünkü 16 bitlik (imzasız) bir tamsayının tutabileceği en büyük sayı ve 16 bitlik bir mimarinin erişebileceği en büyük bellek adresidir.

82
Travis Christian

Steve Yegge'nin makalesinin tüm gövdesinden,

Adaylar, bit ve baytların ne olduğunu bilmelidir. İkili sayılabilecekler; Örneğin. ondalık olarak 2 ^ 5 veya 2 ^ 10'un ne olduğunu söyleyebilmelidirler. Eğer 2 ^ 16 ile sormak size boş bakmak gerekir. Bu özel bir sayı. Bilmeliler.

Soruda alıntıladığınız bitten atıldım; Bir adayın önemini açıklayabilmesi gibi görünüyordu, ancak bağlamda adayların başlarının üstünde, 2'nin ondalık dönüşümünün ne bilmesi gerektiğini söylüyor16 olan.

Bunun önemi, insanlar saymak için hala ondalık kullandığımız için, özellikle de kafalarımızda (çoğu durumda), ortak bayt bloklarının kaba kapasitelerini bilmemiz gerekir depolama, bellek ve hatta karakter kodlaması için kullandığımız. Bir bayt 8 bit olduğundan, en yaygın olanı 8, 16, 24, 32 ve 64'tür.

Şu anda 2 derdim32 bir geliştiricinin uğraştığı en yaygın kapasitedir. Bunu bilmeyen geliştiricilerden şüpheleniyorum 232 birincil anahtarlar için 32 bit ints kullanan veritabanlarında kabaca kaç kaydın saklanabileceğini bulmak için hiç uğraşmadıkları anlamına geldiği için kabaca 4 milyar (maksimum imzalanmışsa ~ 2 milyar değer) veya kimlikler, tarihler vb. için 32 bit ints kullanan eski kodun 64 bit olarak yeniden düzenlenmesi gerekir.1

216 Java short) toplam kapasitesidir. (-2 arasındaki toplam sayılar15 ve 2151)

Bir geliştirici 8 bitin ne olduğunu ezbere bilmelidir. Birçok yaygın kullanım arasında ASCII karakter kodlaması bulunur.

Bir programcının bilmesini beklemezdim 214 veya 218 hiç, ama muhtemelen 2 bilmek bekliyoruz16 çünkü tam sayıları kolayca hatırlamak için çok yaygın bir sayı ve yeterince kısa bir sayıdır (65536).


1: Call of Duty: MW2 veya iPhone Game Center'ın liderlik tablolarına göz atarsanız, genellikle en yüksek puanları 2.147.483.647 olan yüksek puanlarla görürsünüz.31-1, işaretli bir 2'nin maksimum değeri32 tamsayı.

58
Nicole

2 ile ilgili görebildiğim tek sebep16 "özel" olarak, 16 bit işletim sisteminde tek bir kayıtta saklayabileceğiniz en yüksek tamsayıdan bir tanesidir.

Benzer şekilde, aynı mantığı 2'ye uygulayabilirsiniz.32 ve 32 bit işletim sistemleri.

Önemli bir bilgi parçası olup olmadığını söyleyebilmek için soru için daha fazla bağlam bilmem gerekir.

3
ChrisF