10 luk sayı sisteminden 2-3-4... sayı sistemlerine geçiş

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,419
Excel Vers. ve Dili
excel 2010
merhaba
10 luk sayı sisteminde yazdığımız bir sayıyı 2-3-4-5-6-7-8-9... sayı sistemlerine dönüştürecek, yerleşik fonksiyonlarla formül kurulabilir mi?
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,419
Excel Vers. ve Dili
excel 2010
merhaba
10 luk sistemden 2lik sisteme geçebiliyoruz, ya 3-4-5... sayı sistemlerine?
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Diğer sayı sistemlerine dönüştürme amaçlı bir dosya hazırladım inceleyin. 8'lik ve 16'lık sayı sistemlerinde harfte kullanıldığından dosyada bu dikkate alınmamıştır. Bu iki sistem için zaten Toolpak eklentisinin yüklenmesi kaydıyla hazır fonksiyonlar mevcuttur.

2'lik için =DEC2BIN(.....)
8'lik için =DEC22HEX(....)
16'lık için =DEC2OCT(....)

Not: Toolpak çözümleyicisi yüklü ve işaretli olmalıdır.
 

Ekli dosyalar

İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,104
Excel Vers. ve Dili
Excel, 365 - İngilizce
Aşağıdaki kullanıcı tanımlı fonksiyon 2'lik sayı içindir. Ancak;
renklendirdiğim yerleri istedeğiniz sistem için değiştirmeniz yeterlidir.


Function D2B(ByVal n As Long) As String
n = Abs(n)
D2B = ""
Do While n > 0
If n = (n \ 2) * 2 Then
D2B = "0" & D2B
Else
D2B = "1" & D2B
n = n - 1
End If
n = n / 2
Loop
End Function



Örneğin 3'lü sistem için bu kodlar:

Function D3B(ByVal n As Long) As String
n = Abs(n)
D3B = ""
Do While n > 0
If n = (n \ 3) * 3 Then
D3B = "0" & D3B
Else
D3B = "1" & D3B
n = n - 1
End If
n = n / 3
Loop
End Function

şeklinde değiştirerek istediğiniz şekilde bu türde fonksiyonlar üretmeniz mümkün.

Fonksiyonun söz dizimi:

=D2B(sayı)

..
 
Son düzenleme:

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,419
Excel Vers. ve Dili
excel 2010
merhaba
syn Yurttaş, syn Leventm, syn Haluk
ilginize teşekkür ederim.
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,315
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Merhaba;

Yukarıdaki dokümandan yararlanarak, ekte örnek olarak 4'lük ve 8'lik tabanlı sayıların 10'luk tabandaki değerleri yerleşik fonksiyonlarla bulunmuştur.


.
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,315
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Ekteki biraz daha genel kullanım amaçlı oldu .....



.
 
Katılım
24 Ekim 2009
Mesajlar
11
Excel Vers. ve Dili
excel 2007 (eng-tr)
mantık guzel ama yanlıslıklar var 2 lik taban 0 ve 1 lerden olusur ama 3,4,5,6... sadece bunlardan olusmaz fonksıyon 2 lık taban ıcın dogrudur ama dıgerlerınde hatalı sonuc vercektır.
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Arkadaşlar,

Bir fonksiyon yazdım. Lütfen kontrol edin.

Access uygulamasını da ekliyorum.


Herkese iyi çalışmalar.

Kod:
Public Function sayi_cevir(onluk As Integer, sistem As Byte) As String
Dim a As Integer, x As Integer
a = 100
ReDim yeni(a) As String

Do While onluk > sistem
    a = a - 1
    yeni(a) = onluk Mod sistem
    onluk = onluk \ sistem
Loop
    yeni(a - 1) = onluk

For x = 0 To 99
    sayi_cevir = sayi_cevir & yeni(x)
Next x
End Function
 

Ekli dosyalar

Son düzenleme:
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Arkadaşlar,

Levent Beyin uyarısıyla gözden kaçan bir noktayı düzelttim:

Kod:
Public Function sayi_cevir(onluk As Integer, sistem As Byte) As String
Dim a As Integer, x As Integer
a = 100
ReDim yeni(a) As String

Do While onluk >[COLOR=Red]=[/COLOR] sistem
    a = a - 1
    yeni(a) = onluk Mod sistem
    onluk = onluk \ sistem
Loop
    yeni(a - 1) = onluk

For x = 0 To 99
    sayi_cevir = sayi_cevir & yeni(x)
Next x
End Function
Bölme işllemi, sayı sisteme eşit olduğu zaman da devam etmeli. bu yüzden araya bir = eklenmesi gerekiyor.

İyi çalışmalar
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
İş tam olsun diye ters fonksiyonu da yazdım.

Kod:
Public Function onluk_sistem(sayi As String, sistem As Byte) As Double
Dim a As Integer
a = Len(Trim(sayi))

For x = a To 1 Step -1
    If CDbl(Mid(sayi, x, 1)) >= sistem Then
        MsgBox sistem & " lik sayı sistemnide " & sistem - 1 & " den büyük rakkam kullanılamaz! ", vbCritical, "UYARI"
        onluk_sistem = 0
        Exit Function
    End If
    onluk_sistem = onluk_sistem + CDbl(Mid(sayi, x, 1)) * sistem ^ (a - x)
Next x

End Function
Yine de kontrol edilmesi gerekir.

İyi çalışmalar
 
Katılım
11 Aralık 2007
Mesajlar
3
Excel Vers. ve Dili
2000
ellerine saglık güzel olmuş
 
Üst