Posted: 06:34am 09 Dec 2023 



Below is from the Micromite manual. The SHIFT operators treat the 64bit number as unsigned. The CMM2 looks like it can handle either treating it as 64bit signed or unsigned. The F4 manual used a lot of the CMM2 manual so probably how the description got changed. H7 came from F4 manual. They all actually operate as per the micromites, so manuals need to be updated. The Picomites likely have the same history so just need the manual updated. All the manuals have the section 64bit Unsigned Integers as below, just the description of the shift operator needs fixing.
64bit Unsigned Integers The Micromite supports 64bit signed integers. This means that there are 63 bits for holding the number and one bit (the most significant bit) which is used to indicate the sign (positive or negative). However it is possible to use full 64bit unsigned numbers as long as you do not do any arithmetic on the numbers. 64bit unsigned numbers can be created using the &H, &O or &B prefixes to a number and these numbers can be stored in an integer variable. You then have a limited range of operations that you can perform on these numbers. They are << (shift left), >> (shift right), AND (bitwise and), OR (bitwise or), XOR (bitwise exclusive or), = (equal to) and <> (not equal to). Arithmetic operators such as +, , etc may be confused by a 64bit unsigned number and could return nonsense results. To display 64bit unsigned numbers you should use the HEX$(), OCT$() or BIN$() functions. For example, the following 64bit unsigned operation will return the expected results: X% = &HFFFF0000FFFF0044 Y% = &H800FFFFFFFFFFFFF X% = X% AND Y% PRINT HEX$(X%, 16) Will display "800F0000FFFF0044
SHIFT OPERATORS These operate in a special way. << means that the value returned will be the value of x shifted by y bits to the left while >> means the same only right shifted. They are integer functions and any bits shifted off are discarded and any bits introduced are set to zero.
Edited 20231209 16:39 by disco4now 