diff options
| author | root <root@annapurna.annapurna.fitness> | 2025-07-09 15:50:50 +0200 |
|---|---|---|
| committer | root <root@annapurna.annapurna.fitness> | 2025-07-09 15:50:50 +0200 |
| commit | e07a195bdd87932b9d00d3d680a9a5a747359566 (patch) | |
| tree | 002bc641d9a0955eb7689c30398dfe4ed57cdde8 /bb.py | |
Diffstat (limited to 'bb.py')
| -rw-r--r-- | bb.py | 39 |
1 files changed, 39 insertions, 0 deletions
@@ -0,0 +1,39 @@ +SQR_MASK = ( + 0x8000_0000_0000_0000, 0x4000_0000_0000_0000, 0x2000_0000_0000_0000, 0x1000_0000_0000_0000, 0x0800_0000_0000_0000, 0x0400_0000_0000_0000, 0x0200_0000_0000_0000, 0x0100_0000_0000_0000, + 0x0080_0000_0000_0000, 0x0040_0000_0000_0000, 0x0020_0000_0000_0000, 0x0010_0000_0000_0000, 0x0008_0000_0000_0000, 0x0004_0000_0000_0000, 0x0002_0000_0000_0000, 0x0001_0000_0000_0000, + 0x0000_8000_0000_0000, 0x0000_4000_0000_0000, 0x0000_2000_0000_0000, 0x0000_1000_0000_0000, 0x0000_0800_0000_0000, 0x0000_0400_0000_0000, 0x0000_0200_0000_0000, 0x0000_0100_0000_0000, + 0x0000_0080_0000_0000, 0x0000_0040_0000_0000, 0x0000_0020_0000_0000, 0x0000_0010_0000_0000, 0x0000_0008_0000_0000, 0x0000_0004_0000_0000, 0x0000_0002_0000_0000, 0x0000_0001_0000_0000, + 0x0000_0000_8000_0000, 0x0000_0000_4000_0000, 0x0000_0000_2000_0000, 0x0000_0000_1000_0000, 0x0000_0000_0800_0000, 0x0000_0000_0400_0000, 0x0000_0000_0200_0000, 0x0000_0000_0100_0000, + 0x0000_0000_0080_0000, 0x0000_0000_0040_0000, 0x0000_0000_0020_0000, 0x0000_0000_0010_0000, 0x0000_0000_0008_0000, 0x0000_0000_0004_0000, 0x0000_0000_0002_0000, 0x0000_0000_0001_0000, + 0x0000_0000_0000_8000, 0x0000_0000_0000_4000, 0x0000_0000_0000_2000, 0x0000_0000_0000_1000, 0x0000_0000_0000_0800, 0x0000_0000_0000_0400, 0x0000_0000_0000_0200, 0x0000_0000_0000_0100, + 0x0000_0000_0000_0080, 0x0000_0000_0000_0040, 0x0000_0000_0000_0020, 0x0000_0000_0000_0010, 0x0000_0000_0000_0008, 0x0000_0000_0000_0004, 0x0000_0000_0000_0002, 0x0000_0000_0000_0001) + +def render_hex(hex_val: int) -> None: + if not isinstance(hex_val, int): + raise ValueError('Input must be integer.') + if hex_val > 0xFFFF_FFFF_FFFF_FFFF: + raise ValueError('Input hexadecimal value is too large, must be 64 bits or less.') + binary_value = bin(hex_val)[2:].zfill(64) + print('\n', end = '') + for i in range(0, 64, 8): + print(*['\x1b[47m' + bit + '\x1b[0m' if bit == '1' else bit for bit in binary_value[i:i+8]]) + +def switch_bit(bm: int, *idxs: int) -> int: + for idx in idxs: + bm ^= SQR_MASK[idx] + return bm + +bm = 0x8080_8080_8080_8080 +render_hex(bm) + +new_bm = switch_bit(bm) +render_hex(new_bm) + +def turn_90_clockw(bm: int) -> int: + return (bm & 0x0) + +num = 0x110 +render_hex(num) +newnum = num // 0x4 +render_hex(newnum) +print(newnum)
\ No newline at end of file |
