how to express a byte value?
Posted: Tue Jan 04, 2011 4:54 am
Hello all.
How do you properly express &H80000000 in PB?
Thank you
Tim
How do you properly express &H80000000 in PB?
Thank you
Tim
http://www.purebasic.com
https://www.purebasic.fr/english/
Code: Select all
num.q = $80000000
Debug num
Code: Select all
num.l = $80000000
Debug StrU(num, #PB_Long)
Code: Select all
Procedure.i LShiftLong(Value.i, Shift.w); As Long
Define ReturnValue.i
;Define Si.w
MakeOnBits()
If (Value & (2 | (31 - Shift))) :Goto OverFlow :EndIf
ReturnValue = ((Value & OnBits(31 - Shift)) * (2 | Shift))
ProcedureReturn ReturnValue
OverFlow:
;LShiftLong = ((Value And OnBits(31 - (Shift + 1))) * (2 ^ (Shift))) Or &H80000000
ReturnValue = ((Value & OnBits(31 - (Shift + 1))) * (2 ^ (Shift))) | &H80000000
ProcedureReturn ReturnValue
EndProcedure
Procedure.i RShiftLong( Value.i,Shift.i); As Long
Define ReturnValue.i
Define hi.i
MakeOnBits()
If Value & &H80000000
hi = &H40000000
EndIf
ReturnValue.i = (Value & &H7FFFFFFE) \ (2 | Shift)
ReturnValue.i = (RShiftLong | (hi \ (2 | (Shift - 1))))
ProcedureReturn ReturnValue.i
EndProcedure
Procedure MakeOnBits()
Define ReturnValue.i
Define j.i
Define v.i
For j = 0 To 30
v = v + (2 | j)
OnBits(j) = v
Next j
OnBits(j) = v + &H80000000
EndProcedure
Any idea what the functions are supposed to do? That is the real key to porting them.tseyfarth wrote:These are the functions I am trying to port from VB6
tseyfarth wrote:Hello all.
How do you properly express &H80000000 in PB?
Thank you
Tim
$80000000 is not a byte value, it can't fit in a byte. But you can put it in a long, integer or quad variable.how to express a byte value?
Code: Select all
a.l=$80000000
Debug a
Debug Bin(a)
a>>31
Debug a
Debug Bin(a)
b.q=$80000000
Debug b
Debug Bin(b)
b>>31
Debug b
Debug Bin(b)