“256” nın ikili gösterimi nedir? [kapalı]


15

Ondalık değeri ikiliye ve ikili sayıları ondalık sayıya dönüştürebilirsiniz. Fakat "256" sayısını nasıl temsil edebilirsiniz?

255 = 11111111

1 bayt 8'den fazla ikili basamağa (bit) sahip olamaz. Bu nasıl mümkün olabilir?


3
@Serious zaten söylediği gibi. Bilgisayarlar 0'dan saymaya başladığı için bir bit daha gerekiyor. Bu "el dilinde" 11 veya gerçek dünyada "bir kişi daha" (bayt) :)
SOMN

2
Bunu "Gerçek bir soru değil" olarak kapattım çünkü aslında ne bilmek istediğinizi söylemek zor. Bir sayının ikili temsilini bilmek ister misiniz? Bir sayının bir bayta sığmamasına rağmen nasıl var olabileceğini merak ediyor musunuz? Verilerin bit ve bayt olarak nasıl saklandığını merak ediyor musunuz? Evet, 1 bayt 8 bitten fazla tutamaz, çünkü bu bir baytın tanımıdır. Ancak bu, genel olarak rakamlara herhangi bir sınır koymaz.
Der Hochstapler

8-bit'de 256'yı temsil edemezsiniz.
Olağanüstü Zeka

Yanıtlar:


40

İkili 256'yı nasıl temsil edeceğinizi soruyorsunuz, ancak sanırım insanlar baytların neden depoladığı en büyük sayı 255 olduğunda 256 farklı sayı saklayabileceğini merak ediyorsunuz. aslında ilk sayı, 1 ikinci, 2 üçüncü ... 255 256.

Ayrıca, 11111111 imzalanmamış baytlar için sadece 255'tir. İmzalı bir baytınız varsa (imzalı bir değer negatif değerleri tutabilecek bir değerdir), 11111111 aslında -1'dir. Bkz. Http://en.wikipedia.org/wiki/Two's_complement . İkisinin tamamlayıcısının çalışması, pozitif bir sayıya negatif bir sayı ekleyerek 0 ile sonuçlanır. Diğer insanların söylediği gibi, 11111111'e biraz eklersek ve veri türünüz yalnızca 8 biti destekleyebilirse, son bit taşacak ve sizi bırakacaktır 0. İşaretli baytlar için değerler -128 ile 127 arasında değişir. 128 negatif sayı + 0 + 127 pozitif sayı = toplam 256 sayı.

İmzalı değerler için ilk bit "işaret" bitidir. Bu bit varsa, sayı negatif olur. 10000000 negatif, 01000000 pozitif, 11111111 negatif, 01111111 pozitif ...

Pencerelerde iseniz (belki de mac da vardır), hesap makinesini açabilir, programcı moduna geçirebilir, sbyte'yi seçebilir ve ondalık gösterimleriyle nasıl ilişkili olduklarını görmek için bitlerle oynayabilirsiniz.

256 ve ondalık sayıları gösteren Windows Hesap Makinesi


12

Bunu temsil etmek için 2 bayta ihtiyacınız var. 256 = 00000001 00000000


11

Bildiğiniz gibi 255d (ondalık) 11111111b'ye (ikili) eşittir. Şimdi değere 1 eklemek istiyorsanız, iki olasılık vardır:

Ya sadece 8 bitiniz var. Bu durumda, taşma denir . Böylece "dahili" olarak, 1 eklenecektir 100000000b (9 bitte 256d) elde edilir. Ancak yalnızca 8 bitiniz olduğu için, daha düşük 8 bit "döndürülecektir". Böylece 0d = 0b ile sonuçlanırsınız (çoğu bilgisayar mimarisinde yan not olarak özel bir taşma bayrağı ayarlanır.)

Bunu parmaklarınızla saymakla aynı şekilde düşünün. Parmaklarınızın 9d gösterdiğini düşünün. Şimdi bir parmak daha ekliyorsunuz. Bir 10 daha eklemek istersen ne yaparsın?

Diğer olasılık ise 8 bitten fazla kullanılabilir olmasıdır. Bu durumda, başlangıca bir basamak daha ekleyebilirsiniz ve sonuç gerçekten 100000000b = 256d olacaktır.

Bayt, bir bilgisayar sisteminin (bellek sistemi) ele alabileceği en küçük "birim" dir. Bu, yalnızca tek bir bit bilmek istiyorsanız, bellek sisteminden size bir adresten belirli bir bayt vermesini istemeniz ve daha sonra kendinizle ilgilendiğiniz bitin değerini bulmanız gerektiği anlamına gelir.

Ancak 8 bit bir baytı oluşturduğu gibi, daha büyük veri türleri de vardır. 2 bayt bir kelime (16 bit), iki kelime (dört bayt, 32 bit) çift bir kelime oluşturur. Ve günümüzde standart 64 bit mimarilerin 64 bit veri tipleri bile var (kayıt olarak adlandırılıyor).


Evet ve bilgisayar bu 64 biti 8 ayrı baytlık bir grup olarak değil, 64 bitlik tek bir birim olarak düşünüyor. Örneğin, imzalanmış değerleriniz varsa, bu 64 bitten yalnızca biri işaret bitidir.
Bay Lister

5

100000000 ve birden fazla bayta ihtiyacı var. Aslında 9 bite ihtiyacı var.


0

Bir bit kaydırma işlemiyle ( ikili gösterimin endianitesine bağlı olarak sol veya sağ ) temsil edebilirsiniz. Örneğin, bu bir astar büyük bir endian temsili için çalışır (önce en önemli bayt):

1 << 8

İmzasız bir bayt yalnızca [0 - 255] aralığını içeren 256 değeri tutabilir. 256 değeri için daha büyük bir değeri, örneğin bir tamsayıyı tutabilen bir veri türü kullanmanız gerekir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.