3'lük Tabandan 9'luk Tabana Kolay Dönüşüm

Belki basitliğinden belki bilgisayarla ilgili olmasından taban aritmetiği çok sevdiğim matematik konularından biri. Burada yapılan temel işlemlerin başında belli bir tabanda belirtilmiş sayıların başka tabanlarda ifade edilmesi gelir. Bu da gerçekten güzelce anlatılır hem kitaplarda hem de derslerde. Hatta 2'lik tabanı 8'lik ve 16'lık tabana çevirme ve 8'lik ve 16'lık tabanı 2'lik tabana çevirmedeki özel durumlar da belirtilir aşağı yukarı şu şekilde: 2 -> 82 -> 168 -> 216 -> 2.

Bu bilgiler ışığında benzer soruları herkes çeşitli nedenlerle işlem hatası yapmazsa doğruca çözebilir. Peki soru biraz değiştirilip verilen sayının 3'lük tabandan 9'luk tabana çevrilmesi istenirse ne olur sizce? Bu biraz sorunun sorulduğu kişiye ve içinde bulunduğu duruma göre değişir. Ben benzer bir soruyla geçen sene Bilgisayar Mühendisliğine Giriş dersinin bir sınavında karşılaştım. 3 ve 9'un arasındaki kuvvetsel ilişki dikkatimi çekse de soruyu önce 10'luk tabana ve sonra hedef tabana çevirim yaparak çözdüm çünkü bir kısa veya kolay yol arayarak sonucu bulamama riskini alacağıma bu şekilde doğru sonuca biraz çok işlem yaparak da olsa ulaşacaktım. Bununla birlikte çözüm için herhangi bir kısıtlama olmasa da soruyu soranın amacının benden kolay yolu keşfetmemi istemesi olduğundan adım gibi emindim, ben de öyle yapardım büyük ihtimalle.

3'lük tabandan 9'luk tabana dönüşüm için kolay yolu sınavdan sonra araştıracaktım ama yapamadım. Yaklaşık bir sene sonra, geçen bütünleme döneminde arkadaşlarımdan biri BMG soruları hakkında benden yardım isteyince ben de eski bir halledilmemiş meseleyle ilgilenme şansını yakaladım.

O dönemde yetiştirmek için iki ödev üzerinde uğraştığımdan yöntemi kendi kendime keşfetmeyi deneyemedim. Bunun yerine internette kısa bir araştırma yaptım. Şaşırtıcı olmayan bir biçimde Türkçe içerik yok, şuradaki 3'lük tabanda yazılmış ''2011212'' sayısını 9'luk tabana çevirmenin yolu nedir? sorusunu saymazsak.

İngilizce arama yaparak kolayca çözüm yoluna ulaşabiliyoruz, How do you convert a number from base 3 directly to base 9? ve Changing base 3 to base 9 ile. Bu iki yazıyla yöntemi öğrenip arkadaşlarıma da aynen aktardım. Ama burada bırakmak içime sinmedi ve fazladan birkaç kişiye bile ulaşsa kardır diye düşünerek bu yazıya başladım.

Sorumuzu tekrarlayıp hatırlayalım. Bir sayı nasıl doğrudan 3'lük tabandan 9'luk tabana dönüştürülebilir? Örneğin 10'luk tabana geçiş yapmadan (1110212.20211)3 sayısını nasıl 9'luk tabana çevirebiliriz?

Soruda görüldüğü gibi (x)b ifadesinde x sayıyı, b de tabanı göstermektedir. Sadece bir taban diğerinin kuvveti olduğunda işe yarayan bir kolaylık vardır. Burada onu kullanacağız.

3 ^ n = 9
n = 2

Verilen sayıyı sağdan sola doğru n'li, yani 2'li gruplara ayıracağız ve en solda grup elaman sayısını tamamlayaman eleman kalırsa soluna yeteri kadar 0 ekleyeceğiz:

(01 11 02 12 . 20 21 10)3

Şimdi her grubu 3'lük tabandan 9'luk tabana dönüştüreceğiz ki bu tüm sayıyı tek seferde dönüştürmekten daha kolaydır. Daha sonra da dönüştürülen sayıları birleştirerek hedef sayıyı elde edeceğiz:

(01)3 = 3 x 0 + 1 x 1 = (1)9
(11)3 = 3 x 1 + 1 x 1 = (4)9
(02)3 = 3 x 0 + 1 x 2 = (2)9
(12)3 = 3 x 1 + 1 x 2 = (5)9
(20)3 = 3 x 2 + 1 x 0 = (6)9
(21)3 = 3 x 2 + 1 x 1 = (7)9
(10)3 = 3 x 1 + 1 x 0 = (3)9

Bunları sırayla birleştirirsek 9 tabanındaki karşılığını buluruz:

(1425.673)9

Taban aritmetiğine aşina olanlar ikilik grupların nasıl 3'lük tabandan 9'luk tabana dönüştürüldüğünü anlamıştır ama her ihtimale karşı biraz daha açık bir biçimde yazalım bir örneği:

(21)3 = (2 x 3 ^ 1 + 1 x 3 ^ 0)10 = (7)10 = (0 x 9 ^ 1 + 7 x 9 ^ 0)

Peki 9'luk tabandan 3'lük tabana dönüşüm yapmamız istenseydi ne yapacaktık? (836)9'u örnek olarak inceleyelim. İşimizi kolaylaştırması için 3'ün kuvvetlerinin bir tablosunu yazalım:

3 ^ 3   3 ^ 2   3 ^ 1   3 ^ 0
  27        9         3        1

Bu tablodan yararlanarak 9'luk tabandaki sayıyı n'li yani 2'li gruplar halinde 3'lük tabana çevirebiliriz:

(8)9 = (22)3
(3)9 = (10)3
(6)9 = (20)3

Gördüğünüz gibi zor bir tarafı yok. Ama bu kolay yolun sadece 2'lik ve kuvveti tabanlarda geçerli olmadığı ve genelleştirilebilir olduğu sanırım ya yeteri kadar vurgulanmıyor Türkçe kaynaklarda ya da biz öğrenenler ipuçlarını yakalayacak kadar dikkatli olamıyoruz her zaman.

Eminim okumaya doyamamışsınızdır, birkaç ek okumayla yardımcı olayım :)



Yorumlar

Bu blogdaki popüler yayınlar

Diğer Dillerde Hoşçakal

Fedora 24'te GRUB 2 Önyükleyici Temasını Değiştirme

Müfettiş Gadget'taki Kötü Adamın Yüzü Açığa Çıkmış