View Full Version : مبنای 36
  
ameri110
یک شنبه 06 تیر 1389, 12:58 عصر
سلام
کسی میدونه چجوری میشه یک عدد رو به مبنای 36 برد ؟
یعنی:
0123456789amcdefgh......xyz
fazelm
یک شنبه 06 تیر 1389, 13:08 عصر
سلام
کسی میدونه چجوری میشه یک عدد رو به مبنای 36 برد ؟
یعنی:
0123456789amcdefgh......xyz
یعنی چی ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
علیرضا حسن زاده
یک شنبه 06 تیر 1389, 13:21 عصر
خوب اگه به مبنای دو ببری (با ماشین حساب ویندوز یا برنامه ای که خودت بنویسی) خیلی راحت مثل تبدیل به 8 یا 16 میشه اسن کار رو کرد (البته مبنای 36 یکم فرق می کنه ولی 32 با این روش راحته) اگه طارحی دیجیتال هم خونده باشید تو کتاب مانو روش رو توضیح داده مثلا مبنای 9 و کلا مبنا های غیر استاندارد
یه سوال؟ این تبدیل به چه دردی میخوره؟(قصد فضولی ندارم ولی میخوام کاربردش رو براتون بدونم اگه ممکنه)
fazelm
یک شنبه 06 تیر 1389, 13:50 عصر
خوب اگه به مبنای دو ببری (با ماشین حساب ویندوز یا برنامه ای که خودت بنویسی) خیلی راحت مثل تبدیل به 8 یا 16 میشه اسن کار رو کرد (البته مبنای 36 یکم فرق می کنه ولی 32 با این روش راحته) اگه طارحی دیجیتال هم خونده باشید تو کتاب مانو روش رو توضیح داده مثلا مبنای 9 و کلا مبنا های غیر استاندارد
یه سوال؟ این تبدیل به چه دردی میخوره؟(قصد فضولی ندارم ولی میخوام کاربردش رو براتون بدونم اگه ممکنه)
من که چیزی نفهمیدم :لبخند:
ameri110
یک شنبه 06 تیر 1389, 14:00 عصر
مثلا میتونی پسورد کرک کنی
---------------------------------------
مثلا
1:1
2:2
3:3
4:4
5:5
6:6
7:7
8:8
9:9
10:a
b:11
c:12
d:13
e:14
f:15
g:16
i:17
j:18
.
.
.
Ali_Hashemi
یک شنبه 06 تیر 1389, 14:34 عصر
سلام
تبدیل مبناها از ساده ترین عملیات ریاضیه که مطمئنا همه شما ها از دوران تحصیل با اون آشنایی دارید :اشتباه: (تقسیمهای متوالی رو یادتون میاد :لبخند:)
با این کد میتونید عدد رو به هر مبنایی که میخواهید ببرید (از مبنای 2 تا 36)
(این کد VB.net هست و با چند تغییر کوچولو در Syntax میتونید در زبانهای دیگر هم استفاده کنید. از چیزی به جز عملیات ساده ریاضی استفاده نشده)
Public Shared Function Convert_To_Base(ByVal num As Integer, ByVal ibase As Integer) As [String]
        Dim Characters As [String] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        If ibase < 2 OrElse ibase > 36 Then
            Return ""
        End If
        Dim x As Integer
        Dim ResultNumber As [String] = ""
        While num >= ibase
            x = num Mod ibase
            ResultNumber = Characters(x) + ResultNumber
            num = num / ibase
        End While
        ResultNumber = Characters(num) + ResultNumber
        Return ResultNumber
    End Function
ameri110
یک شنبه 06 تیر 1389, 15:35 عصر
من که هنوز دانش آموزم
اگه یکی بتونه کد وی بی6  رو بنویسه خیلی ممنون میشم
ahmads
یک شنبه 06 تیر 1389, 17:27 عصر
بفرمائید دوست عزیز ، الگوریتم پست 6 هست اما برای VB6
Dim result As String, num, base As Integer, x As Variant
Private Sub Command1_Click()
num = InputBox("Enter your number : ")
base = InputBox("Enter the base of the number : ")
If base < 2 Or base > 36 Then
    Print ""
End If
While num >= base
    x = num Mod base
    Call characters(x)
    num = num / base
Wend
Call characters(Fix(num))
Print result
End Sub
Function characters(n)
    Select Case n
        Case 0 to 9
            result = n & result
        Case 10
            result = "A" & result
        Case 11
            result = "B" & result
        Case 12
            result = "C" & result
        Case 13
            result = "D" & result
        Case 14
            result = "E" & result
        Case 15
            result = "F" & result
        Case 16
            result = "G" & result
        Case 17
            result = "H" & result
        Case 18
            result = "I" & result
        Case 19
            result = "J" & result
        Case 20
            result = "K" & result
        Case 21
            result = "L" & result
        Case 22
            result = "M" & result
        Case 23
            result = "N" & result
        Case 24
            result = "O" & result
        Case 25
            result = "P" & result
        Case 26
            result = "Q" & result
        Case 27
            result = "R" & result
        Case 28
            result = "S" & result
        Case 29
            result = "T" & result
        Case 30
            result = "U" & result
        Case 32
            result = "V" & result
        Case 33
            result = "W" & result
        Case 34
            result = "X" & result
        Case 35
            result = "Y" & result
        Case 36
            result = "Z" & result
End Select
End Function
راستی دوستان راهی نداره تو VB6 این همه Case نباشه !؟ جونم در اومد تا 36 تا تموم شد تازه اونم با کپی یکیشون و تکرار و ویرایشش :لبخند:
علیرضا حسن زاده
یک شنبه 06 تیر 1389, 18:56 عصر
راستی دوستان راهی نداره تو VB6 این همه Case نباشه !؟ جونم در اومد تا 36  تا تموم شد تازه اونم با کپی یکیشون و تکرار و ویرایشش
می تونستی از ASC و CHR استفاده کنی و با توجه به عدد کد اسکی رو افزایش بدی چون یه فاصله ثابت داره 
مثلا عدد + 55 در اولین مورد میشه A بعد 11+55 میشه B و الا آخر...
ahmads
یک شنبه 06 تیر 1389, 19:18 عصر
ممنون دوست عزیز، این هم به روش شما :
Dim result As String, num, base As Integer, x As Variant
Private Sub Command1_Click()
num = InputBox("Enter your number : ")
base = InputBox("Enter the base of the number : ")
If base < 2 Or base > 36 Then
    Print ""
Else
    result = ""
    While num >= base
        x = num Mod base
        Call characters(x)
        num = num / base
    Wend
    Call characters(Fix(num))
    Print result
End If
End Sub
Function characters(n)
    Select Case n
        Case 0 to 9
            result = n & result
        Case 10 to 35
            result = Chr(55 + n) & result
End Select
End Function
xxxxx_xxxxx
یک شنبه 06 تیر 1389, 21:32 عصر
سلام،
بجای این دو تا:
Case 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
...
Case 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35
می تونید بنویسید:
Case 0 To 9
...
Case 10 To 35
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.