Bitwise operations??
BlitzMax Forums/BlitzMax Beginners Area/Bitwise operations??| 
 | ||
| Hello, I'm trying to fingure out how to do bitwise operations in Max. All I want to do is be able to set or clear bits based on a bitmask.. For example, in other languages, & and || always did this fine. For some reason it isn't porting over to max well for me. Here is a simple test i whipped up. I have a value of 3 being held in a variable called flag (bits 1 and 2 set). I am trying to use & and | to toggle bit 1 on/off... Which should result in the flag variable toggling between 2 and 3.. DOesn't seem to be working... I understand I can use XOR for this, but i don't simply want to toggle the bits, I want to set them if not set, and/or clear them if not cleared.. Here is my sample code. Am I doing something wrong, or is this Max related?? 
Graphics 640,480
Global Flag:Byte = 3
Global bitmask:Byte = 1
While Not KeyDown(KEY_ESCAPE)
	Cls
	DrawText("BITWISE OPERATOR TEST",10,10)
	DrawText("Use 7 to do an & operation (bitmask of "+bitmask+")",10,30)
	DrawText("Use \ to do an | operation (bitmask of "+bitmask+")",10,50)
	DrawText("Flag Value: " + flag,10,70)
	
	If KeyHit(KEY_7) '& operation
		flag = (flag & bitmask)
	EndIf
	
	If KeyHit (KEY_BACKSLASH) '| operator
		flag = (flag | bitmask)
	EndIf
	
	FlushMem
	Flip
Wend
End
 | 
| 
 | ||
| I think you do something wrong flag & bitmask -> bitmask and after that flag | bitmask -> bitmask as flag is already bitmask. I think this is what you wanted: 
Graphics 640,480,0
Global Flag:Byte = 3
Global bitmask:Byte = 1
While Not KeyDown(KEY_ESCAPE)
	Cls
	DrawText("BITWISE OPERATOR TEST",10,10)
	DrawText("Use 7 to do an & operation (bitmask of "+bitmask+")",10,30)
	DrawText("Use \ to do an | operation (bitmask of "+bitmask+")",10,50)
	DrawText("Flag Value: " + flag,10,70)
	
	If KeyHit(KEY_7) '& operation
		flag = (flag & ~bitmask)
	EndIf
	
	If KeyHit (KEY_space) '| operator
		flag = (flag | bitmask)
	EndIf
	
	FlushMem
	Flip
Wend
End
 | 
| 
 | ||
| aah, i see... Thank you very much for your help! |