10 luk sayı sisteminden 2-3-4... sayı sistemlerine geçiş [Archive] - Excel Forum

PDA

Tüm Versiyonu Göster : 10 luk sayı sisteminden 2-3-4... sayı sistemlerine geçiş


uzmanamele
24-01-2008, 14:17
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?

yurttas
24-01-2008, 14:48
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?

=DEC2BIN(a1)
=DEC2BIN(500)

gibi.

..

uzmanamele
24-01-2008, 15:09
merhaba
10 luk sistemden 2lik sisteme geçebiliyoruz, ya 3-4-5... sayı sistemlerine?

Haluk
24-01-2008, 15:12
Burada anafikrini anlatmaya çalışmışlar...

http://www.arkasokak.net/arsiv/t-31180.html

Levent Menteşoğlu
24-01-2008, 15:14
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.

yurttas
24-01-2008, 15:33
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ı)

..

uzmanamele
24-01-2008, 15:38
merhaba
syn Yurttaş, syn Leventm, syn Haluk
ilginize teşekkür ederim.

Haluk
24-01-2008, 16:04
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
24-01-2008, 16:19
Ekteki biraz daha genel kullanım amaçlı oldu .....



.

lewent27
18-12-2009, 22:54
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.

modalı
24-12-2009, 22:44
Arkadaşlar,

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

Access uygulamasını da ekliyorum.


Herkese iyi çalışmalar.

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

modalı
25-12-2009, 21:29
Arkadaşlar,

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

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


Bölme işllemi, sayı sisteme eşit olduğu zaman da devam etmeli. bu yüzden araya bir = eklenmesi gerekiyor.

İyi çalışmalar

modalı
26-12-2009, 12:14
İş tam olsun diye ters fonksiyonu da yazdım.

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 FunctionYine de kontrol edilmesi gerekir.

İyi çalışmalar

berat_
28-12-2011, 13:22
ellerine saglık güzel olmuş


Özel Arama