add toggle-bit word to math.bitwise
parent
9d03a591cf
commit
a4860c3173
|
@ -204,8 +204,25 @@ HELP: on-bits
|
||||||
"64 on-bits .h"
|
"64 on-bits .h"
|
||||||
"ffffffffffffffff"
|
"ffffffffffffffff"
|
||||||
}
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
HELP: toggle-bit
|
||||||
|
{ $values
|
||||||
|
{ "m" integer }
|
||||||
|
{ "n" integer }
|
||||||
|
{ "m'" integer }
|
||||||
}
|
}
|
||||||
;
|
{ $description "Toggles the nth bit of an integer." }
|
||||||
|
{ $examples
|
||||||
|
{ $example "USING: math.bitwise kernel prettyprint ;"
|
||||||
|
"0 3 toggle-bit .b"
|
||||||
|
"1000"
|
||||||
|
}
|
||||||
|
{ $example "USING: math.bitwise kernel prettyprint ;"
|
||||||
|
"BIN: 1000 3 toggle-bit .b"
|
||||||
|
"0"
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
HELP: set-bit
|
HELP: set-bit
|
||||||
{ $values
|
{ $values
|
||||||
|
|
|
@ -29,3 +29,6 @@ IN: math.bitwise.tests
|
||||||
\ foo must-infer
|
\ foo must-infer
|
||||||
|
|
||||||
[ 1 ] [ { 1 } flags ] unit-test
|
[ 1 ] [ { 1 } flags ] unit-test
|
||||||
|
|
||||||
|
[ 8 ] [ 0 3 toggle-bit ] unit-test
|
||||||
|
[ 0 ] [ 8 3 toggle-bit ] unit-test
|
||||||
|
|
|
@ -17,6 +17,7 @@ IN: math.bitwise
|
||||||
: bits ( m n -- m' ) 2^ wrap ; inline
|
: bits ( m n -- m' ) 2^ wrap ; inline
|
||||||
: mask-bit ( m n -- m' ) 2^ mask ; inline
|
: mask-bit ( m n -- m' ) 2^ mask ; inline
|
||||||
: on-bits ( n -- m ) 2^ 1- ; inline
|
: on-bits ( n -- m ) 2^ 1- ; inline
|
||||||
|
: toggle-bit ( m n -- m' ) 2^ bitxor ; inline
|
||||||
|
|
||||||
: shift-mod ( n s w -- n )
|
: shift-mod ( n s w -- n )
|
||||||
[ shift ] dip 2^ wrap ; inline
|
[ shift ] dip 2^ wrap ; inline
|
||||||
|
|
Loading…
Reference in New Issue