2 ^ 32, 1 << 32, 2 << 31 @time 1 << 31 @time 2 ^ 31 function roll(x, n) return (x << n) % (1 << 32) + (x >> (32 - n)) end a = 0x11111111 b = 0x01020304 c = 0x77777777 d = 0x01234567 println(c + d) println(0x789abcde) c = c + d println(xor(b, c)) println(0x7998bfda) b = xor(b, c) println(roll(b, 7)) println(0xcc5fed3c) function quarter_round(a, b, c, d) a = (a + b) % (1 << 32) d = roll(xor(d, a), 16) c = (c + d) % (1 << 32) b = roll(xor(b, c), 12) a = (a + b) % (1 << 32) d = roll(xor(d, a), 8) c = (c + d) % (1 << 32) b = roll(xor(b, c), 7) return a, b, c, d end a = 0x11111111 b = 0x01020304 c = 0x9b8d6f43 d = 0x01234567 quarter_round(a, b, c, d) typeof(a) 0xea2a92f4, 0xcb1cf8ce, 0x4581472e, 0x5881c4bb