PDA

View Full Version : مبنای 36



ameri110
یک شنبه 06 تیر 1389, 11:58 صبح
سلام
کسی میدونه چجوری میشه یک عدد رو به مبنای 36 برد ؟
یعنی:
0123456789amcdefgh......xyz

fazelm
یک شنبه 06 تیر 1389, 12:08 عصر
سلام
کسی میدونه چجوری میشه یک عدد رو به مبنای 36 برد ؟
یعنی:
0123456789amcdefgh......xyz

یعنی چی ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

علیرضا حسن زاده
یک شنبه 06 تیر 1389, 12:21 عصر
خوب اگه به مبنای دو ببری (با ماشین حساب ویندوز یا برنامه ای که خودت بنویسی) خیلی راحت مثل تبدیل به 8 یا 16 میشه اسن کار رو کرد (البته مبنای 36 یکم فرق می کنه ولی 32 با این روش راحته) اگه طارحی دیجیتال هم خونده باشید تو کتاب مانو روش رو توضیح داده مثلا مبنای 9 و کلا مبنا های غیر استاندارد

یه سوال؟ این تبدیل به چه دردی میخوره؟(قصد فضولی ندارم ولی میخوام کاربردش رو براتون بدونم اگه ممکنه)

fazelm
یک شنبه 06 تیر 1389, 12:50 عصر
خوب اگه به مبنای دو ببری (با ماشین حساب ویندوز یا برنامه ای که خودت بنویسی) خیلی راحت مثل تبدیل به 8 یا 16 میشه اسن کار رو کرد (البته مبنای 36 یکم فرق می کنه ولی 32 با این روش راحته) اگه طارحی دیجیتال هم خونده باشید تو کتاب مانو روش رو توضیح داده مثلا مبنای 9 و کلا مبنا های غیر استاندارد

یه سوال؟ این تبدیل به چه دردی میخوره؟(قصد فضولی ندارم ولی میخوام کاربردش رو براتون بدونم اگه ممکنه)

من که چیزی نفهمیدم :لبخند:

ameri110
یک شنبه 06 تیر 1389, 13: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, 13: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, 14:35 عصر
من که هنوز دانش آموزم
اگه یکی بتونه کد وی بی6 رو بنویسه خیلی ممنون میشم

ahmads
یک شنبه 06 تیر 1389, 16: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, 17:56 عصر
راستی دوستان راهی نداره تو VB6 این همه Case نباشه !؟ جونم در اومد تا 36 تا تموم شد تازه اونم با کپی یکیشون و تکرار و ویرایشش
می تونستی از ASC و CHR استفاده کنی و با توجه به عدد کد اسکی رو افزایش بدی چون یه فاصله ثابت داره
مثلا عدد + 55 در اولین مورد میشه A بعد 11+55 میشه B و الا آخر...

ahmads
یک شنبه 06 تیر 1389, 18: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, 20: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