Untitled
unknown
plain_text
2 months ago
1.1 kB
8
No Index
' ./zxbasic/zxbc manipulacao_bits.bas --tzx --BASIC --autorun ' print um byte em formato binário SUB print_bin(v AS uBYTE) PRINT v >> 7 bAND 1b; v >> 6 bAND 1b; v >> 5 bAND 1b; v >> 4 bAND 1b; v >> 3 bAND 1b; v >> 2 bAND 1b; v >> 1 bAND 1b; v >> 0 bAND 1b END SUB ' obtém 2 bits da posição (shift) desejada FUNCTION get_2bit(v AS uBYTE, shift AS uBYTE) AS uBYTE RETURN (v >> shift) bAND 11b END FUNCTION ' faz uma adição/subtração em 2 bits na posição desejada FUNCTION inc_2bit(v AS uBYTE, shift AS uBYTE, ii AS BYTE) AS uBYTE ' DIM a AS uBYTE = v >> shift bAND 11b DIM a AS uBYTE = get_2bit(v, shift) IF (a = 3 AND ii > 0) or (a = 0 AND ii < 0) THEN RETURN v END IF LET a = a+ii DIM mask AS uBYTE = 11b << shift LET mask = bNOT mask ' print_bin(mask) DIM res AS uBYTE = (v bAND mask) bOR (a << shift) RETURN res END FUNCTION CLS DIM a AS uBYTE = 11011010b DIM b AS uBYTE = (a >> 6) bAND 11b DIM c AS uBYTE = a >> 5 bAND 1b print_bin(a) PRINT b PRINT c print_bin(inc_2bit(a, 2, -1))
Editor is loading...