Codesnippets > Math
BOOLEAN LOGIC Functions
Hemlos:
bNOT correct usage is posted at bottom of thread.
Moru:
I was bumping into those problem while doing LSB/MSB conversion for the Mappy loader. The reason for this is possibly because of signed numbers are involved.
--- Code: (glbasic) ---Start values: Dec: 2147450879 Hex: 7FFF7FFF
After Not: Dec: -2147450880 Hex: 91118000
Expected: Dec: 2147516416 Hex: 80008000
Start value bin: 01111111111111110111111111111111
After Not bin: 01111111111111111000000000000000
Expected: 10000000000000001000000000000000
--- End code ---
I'm not totally sure my binary and hex routines are correct with so large numbers though, haven't tested much above 16 bit.
Kitty Hello:
Aye, fixed in next version.
Kitty Hello:
uhm... can you give a simple sample, where bNOT does not return what you think?
Moru:
--- Code: (glbasic) ---// --------------------------------- //
// Project: Binary test
// Start: Thursday, October 16, 2008
// IDE Version: 5.360
LOCAL a, b, c
a = 0x7fff7fff
b = bNOT(a)
DEBUG "Org dec: " + a + " Hex: " + DecToHex$(a) + "\n"
DEBUG "Not dec: " + b + " Hex: " + DecToHex$(b) + "\n"
DEBUG "Org bin: " + DecToBin$(a) + "\n"
DEBUG "Not bin: " + DecToBin$(b) + "\n"
DEBUG "Expected: " + "10000000000000001000000000000000"
END
FUNCTION DecToHex$: d
LOCAL h$, t
WHILE d <> 0
t = bAND(d, 0xF)
d = INTEGER(d / 16)
IF t >= 0 AND t <= 9
h$ = CHR$(ASC("0") + t) + h$
ELSE
h$ = CHR$(ASC("A") + (t-10)) + h$
ENDIF
WEND
IF LEN(h$)=0 THEN h$ = "0"
RETURN h$
ENDFUNCTION
FUNCTION DecToBin$: d
LOCAL h$, t
WHILE d <> 0
t = bAND(d, 0x1)
d = INTEGER(d / 2)
IF t >= 0 AND t <= 1
h$ = CHR$(ASC("0") + t) + h$
ENDIF
WEND
IF LEN(h$)=0 THEN h$ = "0"
RETURN h$
ENDFUNCTION
--- End code ---
Navigation
[0] Message Index
[#] Next page
Go to full version