bitwise operations
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
fold_bits func(value u8) u8 {
|
||||
return (~value & 255) xor 15
|
||||
}
|
||||
|
||||
folded u8 :: fold_bits(240)
|
||||
contextual u8 :: ~0 & 255
|
||||
contextual_shift u8 :: 1 << 7
|
||||
Buffer :: alias [u8(1) << 3]u8
|
||||
|
||||
runtime_left func(value u16, count u8) u16 {
|
||||
return value << count
|
||||
}
|
||||
|
||||
c_count_shift func(value u8, count c_uint) u8 {
|
||||
return value << count
|
||||
}
|
||||
|
||||
c_count_fold u8 :: c_count_shift(3, 2)
|
||||
|
||||
main func() i32 {
|
||||
buffer Buffer = undefined
|
||||
if (folded != 0) return 1
|
||||
if (contextual != 255) return 28
|
||||
if (contextual_shift != 128) return 29
|
||||
if (buffer.len != 8) return 2
|
||||
if ((u8(240) & u8(204)) != 192) return 3
|
||||
if ((u8(240) | u8(15)) != 255) return 4
|
||||
if ((u8(240) xor u8(255)) != 15) return 5
|
||||
if ((u8(129) << 1) != 2) return 6
|
||||
if ((i8(-4) >> 1) != -2) return 7
|
||||
if ((u8(128) >> 1) != 64) return 8
|
||||
if ((u8(64) <<| 2) != 255) return 9
|
||||
if ((i8(64) <<| 2) != 127) return 10
|
||||
if ((i8(-64) <<| 2) != -128) return 11
|
||||
if ((u8(1) <<| 8) != 255) return 12
|
||||
if ((u8(0) <<| 80) != 0) return 13
|
||||
if (runtime_left(3, 4) != 48) return 14
|
||||
if (c_count_shift(3, 2) != 12) return 30
|
||||
if (c_count_fold != 12) return 31
|
||||
if (~u16(0) != 65535) return 16
|
||||
if ((i16(-2) >> 1) != -1) return 17
|
||||
if ((u32(2147483648) >> 31) != 1) return 18
|
||||
if ((i32(-2147483647) << 1) != 2) return 19
|
||||
if ((~u64(0) >> 63) != 1) return 20
|
||||
if ((i64(-2) >> 1) != -1) return 21
|
||||
if ((c_uchar(128) >> 7) != 1) return 22
|
||||
if ((c_int(-2) >> 1) != -1) return 23
|
||||
if ((c_uint(3) << 4) != 48) return 24
|
||||
if ((c_ulonglong(1) <<| 64) != ~c_ulonglong(0)) return 25
|
||||
if ((c_ushort(240) xor c_ushort(255)) != 15) return 26
|
||||
if ((c_longlong(64) <<| 60) != maxval!(c_longlong)) return 27
|
||||
|
||||
value u8 = 3
|
||||
value <<= 2
|
||||
value |= 1
|
||||
value xor= 5
|
||||
value &= 15
|
||||
value >>= 1
|
||||
value <<|= 7
|
||||
if (value != 255) return 15
|
||||
return 42
|
||||
}
|
||||
Reference in New Issue
Block a user