واقعا مچکر خیلی عالیه.
ولی برای تبدیل اعداد منفی چکار میشه کرد؟
اینکه یک عدد منفی است یا مثبت بستگی به این داره که ما با چه شیوه ای اعداد منفی رو تعریف کردیم و از اون
مهمتر اینکه محاسبه مون چند بیتی است. مثلا 11111111 باینری هم می تونه 128- منفی یا 127- منفی یا
255 مثبت باشه، به این بستگی داره که از شیوه مکمل دو استفاده می کنیم یا نه، محاسبه مون 8 بیتی باشه یا
بزرگتر از 8 بیتی.
میشه کدی رو اضافه کرد که اگر عدد منفی بود در نظر بگیره، اما باید اول مشخص کنیم که اعداد مون چند بیتی اند.
در مثال زیر من دو شرط IF به کد اضافه کردم که محاسبه 16 بیتی در نظر گرفته بشه، اگر مبنای ورودی (n) یا
مبنای خروجی (m) دسیمال باشه، منفی بودن عدد هم در نظر گرفته میشه. در سایر مبنا ها عدد منفی علامت -
نداره و محاسبه مثبت و منفی اش فرقی نداره.
کد:
s$ = EditBox$
n = 10
m = 16
hexchar$ = '0123456789ABCDEF'
If (n = 10) Then
x = VAL(s$)
[B][COLOR="Blue"] If (x < 0) Then
x = x + 65536
End[/COLOR][/B]
Else
k = 1
length = LEN(s$)
x = 0
For i = 1 To length
j = length - i + 1
c$ = StrGet(s$,j)
If (c$ > '9') Then
c$ = UPP(c$)
x = x + (ORD(c$) - 55)*k
Else
x = x + (ORD(c$) - 48)*k
End
k = k * n
Next i
End
If (m = 10) Then
[B][COLOR="Blue"] If (x > 32767) Then
x = x - 65536
End[/COLOR][/B]
t$ = CHAR(x)
Else
t$ = ''
For i = 1 To Infinity
j = x - INT(x / m) * m + 1
t$ = StrGet(hexchar$,j) + t$
x = INT(x / m)
If (x = 0) Then
Break()
End
Next i
End
DisplayValue("EditBox1","t$")