Program TestBitFiddle /* Phrogram Version 2.2.2906.16868 and Vista used To develop / create This software Version 2.5.3169.17574 confirmed, Oct 20,2009... succeeded with RGB -> greycode */ Method Main() Define Hex As BitFiddle // test the library,"And_","OR_","EOR","HEX_","GREY_" Define index As Integer Define unit As Integer Define zero As Integer Define mask As String Define values As String[] = Split("0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15"," ") Define specials As String[] = Split("/ ? ' < > _ - , . + = |"," ") trace(" integer HEX_ HEX_int") printline(" integer HEX_ HEX_int") For index = 1 To 16 unit = convertToInteger(values[index]) mask = Hex.HEX_(unit) trace(" "+unit+" "+mask+" "+Hex.HEX_int(mask)) printline(" "+unit+" "+mask+" "+Hex.HEX_int(mask)) Next trace(" bit 16 bit 12 bit 8 bit 4") trace(" "+"8000 "+Hex.HEX_int("8000")+" 800 "+Hex.HEX_int("0800")+" 80 "+Hex.HEX_int("080")+" 8 "+Hex.HEX_int("08")) trace(" bits 31-24 bit 23-16 bit 15-8 bit 7-0") trace(" "+"FF00000000 "+Hex.HEX_int("FF000000")+" FF0000 "+Hex.HEX_int("FF0000")+" FF00 "+Hex.HEX_int("FF00")+" FF "+Hex.HEX_int("FF")) unit = 1 zero = 0 trace(" compare Hex.OR_ and OR_ ") trace(" 1 or 1 = "+ Hex.HEX_(Hex.OR_(unit,unit))+" "+Hex.HEX_(OR_(unit,unit))) trace(" 1 or 0 = "+ Hex.HEX_(Hex.OR_(unit,zero))+" "+Hex.HEX_(OR_(unit,zero))) trace(" 0 or 1 = "+ Hex.HEX_(Hex.OR_(zero,unit))+" "+Hex.HEX_(OR_(zero,unit))) trace(" 0 or 0 = "+ Hex.HEX_(Hex.OR_(zero,zero))+" "+Hex.HEX_(OR_(zero,zero))) trace(" compare Hex.AND_ and AND_ ") trace(" 1 and 1 = "+ Hex.HEX_(Hex.AND_(unit,unit))+" "+Hex.HEX_(AND_(unit,unit))) trace(" 1 and 0 = "+ Hex.HEX_(Hex.AND_(unit,zero))+" "+Hex.HEX_(AND_(unit,zero))) trace(" 0 and 1 = "+ Hex.HEX_(Hex.AND_(zero,unit))+" "+Hex.HEX_(AND_(zero,unit))) trace(" 0 and 0 = "+ Hex.HEX_(Hex.AND_(zero,zero))+" "+Hex.HEX_(AND_(zero,zero))) trace(" compare Hex.EOR_ and EOR_ ") trace(" 1 eor 1 = "+ Hex.HEX_(Hex.EOR_(unit,unit))+" "+Hex.HEX_(EOR_(unit,unit))) trace(" 1 eor 0 = "+ Hex.HEX_(Hex.EOR_(unit,zero))+" "+Hex.HEX_(EOR_(unit,zero))) trace(" 0 eor 1 = "+ Hex.HEX_(Hex.EOR_(zero,unit))+" "+Hex.HEX_(EOR_(zero,unit))) trace(" 0 eor 0 = "+ Hex.HEX_(Hex.EOR_(zero,zero))+" "+Hex.HEX_(EOR_(zero,zero))) printline(" compare Hex.OR_ and OR_ ") printline(" 1 or 1 = "+ Hex.HEX_(Hex.OR_(unit,unit))+" "+Hex.HEX_(OR_(unit,unit))) printline(" 1 or 0 = "+ Hex.HEX_(Hex.OR_(unit,zero))+" "+Hex.HEX_(OR_(unit,zero))) printline(" 0 or 1 = "+ Hex.HEX_(Hex.OR_(zero,unit))+" "+Hex.HEX_(OR_(zero,unit))) printline(" 0 or 0 = "+ Hex.HEX_(Hex.OR_(zero,zero))+" "+Hex.HEX_(OR_(zero,zero))) printline(" compare Hex.AND_ and AND_ ") printline(" 1 and 1 = "+ Hex.HEX_(Hex.AND_(unit,unit))+" "+Hex.HEX_(AND_(unit,unit))) printline(" 1 and 0 = "+ Hex.HEX_(Hex.AND_(unit,zero))+" "+Hex.HEX_(AND_(unit,zero))) printline(" 0 and 1 = "+ Hex.HEX_(Hex.AND_(zero,unit))+" "+Hex.HEX_(AND_(zero,unit))) printline(" 0 and 0 = "+ Hex.HEX_(Hex.AND_(zero,zero))+" "+Hex.HEX_(AND_(zero,zero))) printline(" compare Hex.EOR_ and EOR_ ") printline(" 1 eor 1 = "+ Hex.HEX_(Hex.EOR_(unit,unit))+" "+Hex.HEX_(EOR_(unit,unit))) printline(" 1 eor 0 = "+ Hex.HEX_(Hex.EOR_(unit,zero))+" "+Hex.HEX_(EOR_(unit,zero))) printline(" 0 eor 1 = "+ Hex.HEX_(Hex.EOR_(zero,unit))+" "+Hex.HEX_(EOR_(zero,unit))) printline(" 0 eor 0 = "+ Hex.HEX_(Hex.EOR_(zero,zero))+" "+Hex.HEX_(EOR_(zero,zero))) End Method // -------------------------------------------------------------- // 1 OR 1 = 1 // 1 OR 0 = 1 // 0 OR 1 = 1 // 0 OR 0 = 0 // -------------------------------------------------------------- Function OR_( a As Integer, b As Integer ) As Integer Define a1 As Integer Define b1 As Integer Define c As Integer = 0 Define d As Integer = 1 While Not ( a = 0 And b = 0 ) a1 = a a = a / 2 b1 = b b = b / 2 If a1 <> a + a Or b1 <> b + b Then c = c + d End If d = d + d End While Return c End Function // -------------------------------------------------------------- // 1 AND 1 = 1 // 1 AND 0 = 0 // 0 AND 1 = 0 // 0 AND 0 = 0 // -------------------------------------------------------------- Function AND_( a As Integer, b As Integer ) As Integer Define a1 As Integer Define b1 As Integer Define c As Integer = 0 Define d As Integer = 1 While Not ( a = 0 Or b = 0 ) a1 = a a = a / 2 b1 = b b = b / 2 If a1 <> a + a And b1 <> b + b Then c = c + d End If d = d + d End While Return c End Function // -------------------------------------------------------------- // 1 EOR 1 = 0 // 1 EOR 0 = 1 // 0 EOR 1 = 1 // 0 EOR 0 = 0 // -------------------------------------------------------------- Function EOR_( a As Integer, b As Integer ) As Integer Define a1 As Integer Define b1 As Integer Define c As Integer = 0 Define d As Integer = 1 While Not ( a = 0 And b = 0 ) a1 = a a = a / 2 b1 = b b = b / 2 If ( a1 <> a + a And b1 = b + b ) Or ( a1 = a + a And b1 <> b + b ) Then c = c + d End If d = d + d End While Return c End Function End Program