3 ms·
Note that this VM can depend on behaviour that is explicitly left undefined by the C11 standard. For example, this DCPU-16 program can cause a shift by an amoun
by Triave 15y ago
Note that this VM can depend on behaviour that is explicitly left undefined by the C11 standard. For example, this DCPU-16 program can cause a shift by an amount greater than the width of uint16_t:
SET A, 0x1
SHL A, 0x100
- eridius 15y agoThis will, of course, set both A and O to 0.
- Triave 15y agoDepends how left shift is implemented: on some processors (including x86), only the lowest order bits of the number of positions to shift by are used. In Java: char A = 1; A = ((char) ((A << 32) & 0xFFFF)); System.out.println(Integer.toHexString(A)); actually outputs 1.
- lifthrasiir 15y agoThe Java Language Specification indeed states that the shift amount should be ANDed with 31 or 63, depending on a type of the left-hand operand. I guess Notch did not intend this behavior, however. http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.19 http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html...