| Home CBM ASCII-X BASIC Disk Commands Enter RUN mode Program Format Secret Variables Variable Format Expressions Keywords (divide) (equal) (less) (minus) (more) (multiply) (plus) (power) Abs And Append Asc Atn Auto Backup Bank Begin Bend Bload Boot Box Bsave Bump Catalog Char Chr Circle Close Clr Cmd Collect Collision Color Concat Cont Copy Cos Data Dclear Dclose Dec Def Delete Dim Directory Dispose Dload Do Dopen Draw Ds Ds string Dsave Dverify El Else End Envelope Er Err Exit Exp Fast Fetch Filter Fn For Fre Get Get num Getkey Go Gosub Goto Graphic Gshape Header Help Hex If Input Input num Instr Int Joy Key Left Len Let List Load Locate Log Loop Mid Monitor Movspr New Next Not Off On Open Or Paint Peek Pen Pi Play Pointer Poke Pos Pot Print num Pudef Quit Rclr Rdot Read Record Rem Rename Renumber Restore Resume Return Rgr Right Rlum Rnd Rreg Rspcolor Rsppos Rsprite Run Rwindow Save Scale Scnclr Scratch Sgn Sin Sleep Slow Sound Spc Sprcolor Sprdef Sprite Sprsav Sqr Sshape St Stash Step Stop Str Swap Sys Tab Tan Tempo Then Ti Ti string To Trap Troff Tron Until Using Usr Val Verify Vol Wait While Width Window Xor Syntax Tokens C128 D64plus Disk Escape Codes Hardware PCxface PETSCII Pet2asc Futurama IBM PC-AT Contact Games Glossary Hall of fame Hall of shame Miscellaneous Privacy policy Programming Twisty puzzles |
XOR ( subject , mask )
Evaluate a bit-wise boolean operation.
The XOR function (unlike the OR and AND operators) is exclusively used for bit-wise operations (see notes about logical operation below) because it requires unsigned parameters, and it returns an unsigned result. First, if either parameter is a string, a TYPE MISMATCH ERROR is generated. Next, each parameter, if floating-point, is converted to an integer; if the result is not a legal value (see above) then ILLEGAL QUANTITY ERROR is generated. Finally, each of the 16 corresponding bit pairs is evaluated and the corresponding bit in the result is assigned according to this truth table:
For bit-wise operations, it may be helpful to think of the mask as filtering the subject, such that if a mask bit is 0, the result bit is the same as the original subject. If the mask bit is 1, the result bit will always the complement of the subject bit. So you might also think of it as selectively flipping bits. I hope this doesn't confuse you, but another way to look at it is a simple 1-bit addition with wrap-around. This is different than normal addition because each bit pair is processed individually (instead of all bits being considered a single number). Yet another way to think of it is as subtraction with wrap-around. Because all BASIC functions and operators that return a boolean value return -1 for true, this function can not be directly used for logical comparisons. However, it is possible if you apply the ABS function to both parameters. Although this trick allows XOR to act like a logical operator, a true result would be +1 which might cause problems. So you might also need to negate the result too. Examples are provided below, but to really understand XOR, you need to know how to convert a decimal number into binary (and back again). I won't try to explain that here; you may find this web page helpful for experimenting, or use a calculator. The XOR function is occassionally used with IF, DO, and LOOP (but not very often due to the use of UNSGINED integers). Some "logical" examples:
Some examples demonstrating bit-wise complement:
© H2Obsession, 2014 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||