Sekizlikten Onaltılığa Dönüştürme
8 tabanındaki sekizlik değerleri onaltılık formata çevir.
Bir çökme günlüğü bellek adresini 0x7ffe3a2c1000 şeklinde gösterir. Hata ayıklayıcılar ve yığın dökümleri adresleri her zaman bu biçimde, yani 0x önekiyle onaltılık formatta yazar. Eski bir sistemden veya arşivlenmiş bir belgeden gelen sekizlik bir sayı tutuyorsan, modern araçların bunu anlaması için onaltılığa çevirmen gerekir.
Sekizlik ve onaltılık sistemlerde önek kullanımı
Onaltılık değerlerin başındaki 0x gösterimi C programlama dilinden gelir ve yazılan sabitin onluk veya sekizlik değil, onaltılık olduğunu belirtir. Derleyiciler, hata ayıklayıcılar ve tersine mühendislik araçları büyük oranda C ve türevi dillerle geliştirildiği için bu önek bellek adreslerinin gösterildiği her yere yayıldı.
Sekizlik taban hiçbir zaman bu kadar evrensel bir işaret kazanamadı. C dilinde sekizlik sayılar yalnızca baştaki sıfır ile gösteriliyordu ve bu durum ciddi karışıklıklara yol açıyordu. Sekizlik sayıları desteklemeye devam eden modern diller artık onaltılıktaki 0x yapısına benzer şekilde açık bir 0o öneki gerektirir.
Sekizlikten onaltılığa dönüştürme adımları
- Sekizlik sayını alandaki kutuya yapıştır ve dönüştürme düğmesine tıkla.
- Her sekizlik basamak önce 3 bitlik ikilik karşılığına ayrıştırılır.
- Oluşan 3 bitlik öbekler tek bir ikilik zincir halinde birleştirilir.
- Bu ikilik basamaklar sağdan sola doğru dörderli gruplara ayrılır; en soldaki grup gerekirse sıfırlarla tamamlanır.
- Her 4 bitlik grup, 10 ile 15 arasındaki değerler için A ile F harfleri kullanılarak onaltılık basamağa çevrilir ve sonuç üretilir.
Eski 12 bitlik bir sistem örneği
Sekizlik gösterim alışkanlıklarını şekillendiren PDP-8 mimarisi 12 bitlik sözcükler kullanıyordu. 12 sayısı, üçer bitlik dört sekizlik basamağa tam bölünür. Bu makinedeki en yüksek sözcük değeri, on iki bitin tamamının 1 olması durumunda sekizlik 7777 değeridir.
Bu değer onluk sisteme çevrildiğinde: (7 × 512) + (7 × 64) + (7 × 8) + 7 = 3584 + 448 + 56 + 7 = 4095 çıkar. 4095 sayısı onaltılık tabanda FFF değerine eşittir, çünkü (15 × 256) + (15 × 16) + 15 = 4095 eder. Üç farklı gösterim aynı en yüksek değeri ifade eder. Bu durum 12 bitlik makinelerin neden sekizliği, günümüzün 8 bit tabanlı sistemlerinin ise neden onaltılığı tercih ettiğini açıkça gösterir.
Sekizlikten onaltılığa çevrim nerede gerekir
- Eski Unix kılavuzlarındaki veya kaynak kodlarındaki izin değerlerini modern bir onaltılık bit maskesiyle karşılaştırırken.
- Eski donanım dokümantasyonlarını inceleyen retro emülatörler üzerinde çalışırken.
- Onaltılık standardından önce oluşturulmuş eski yapılandırma dosyalarını ve ağ protokollerini incelerken.
- Otomatik dönüşümlerin sonucunu elle doğrulama ihtiyacı duyduğunda.
Sekizlik ve onaltılık dönüşümü hakkında sorular
İkilik basamaklara geçmeden doğrudan dönüşüm yapılabilir mi?
Tek adımda doğrudan çeviri güvenilir değildir çünkü üç bitlik ve dört bitlik gruplar ortak bir boyutu paylaşmaz. Sayıyı önce ikilik tabana açıp ardından dörderli gruplamak her zaman en kesin yöntemdir.
Bellek adresleri günümüzde neden sekizlik yerine onaltılık kullanır?
Modern mimariler 8 bitlik bayt yapısı üzerine kuruludur. 8 sayısı 4'e tam bölünür ancak 3'e bölünmez. Onaltılık basamaklar bayt sınırlarıyla kusursuz eşleşirken sekizlik basamaklar dışarıda kalır.
Sekizlik bir sayının kaç onaltılık basamak edeceğini önceden tahmin edebilir miyim?
Basamak sayıları basit bir orana sahip olmadığı için kesin bir tahmin yapılamaz. Bitleri ikilik sistem üzerinden saymak, sonucun tam olarak kaç onaltılık basamak gerektirdiğini belirlemenin tek yoludur.
Bugün hâlâ sekizlik tabanı kullanan sistemler var mı?
Çok az alanda kaldı. Unix dosya izinleri bunun başlıca örneğidir. Bellek dökümleri ve makine kodları dahil olmak üzere sekizlik taban kullanan alanların neredeyse tamamı uzun zaman önce onaltılığa geçiş yaptı.
Baştaki 0x öneki sayının değerini değiştirir mi?
Hayır. Bu önek yalnızca sayıyı okuyan kişiye veya derleyiciye basamakların onaltılık olarak yorumlanması gerektiğini bildirir. FFF ile 0xFFF tamamen aynı sayısal değeri temsil eder.