add toggle-bit word to math.bitwise

db4
Doug Coleman 2008-11-29 00:37:36 -06:00
parent 9d03a591cf
commit a4860c3173
3 changed files with 22 additions and 1 deletions

View File

@ -204,8 +204,25 @@ HELP: on-bits
"64 on-bits .h"
"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
{ $values

View File

@ -29,3 +29,6 @@ IN: math.bitwise.tests
\ foo must-infer
[ 1 ] [ { 1 } flags ] unit-test
[ 8 ] [ 0 3 toggle-bit ] unit-test
[ 0 ] [ 8 3 toggle-bit ] unit-test

View File

@ -17,6 +17,7 @@ IN: math.bitwise
: bits ( m n -- m' ) 2^ wrap ; inline
: mask-bit ( m n -- m' ) 2^ mask ; inline
: on-bits ( n -- m ) 2^ 1- ; inline
: toggle-bit ( m n -- m' ) 2^ bitxor ; inline
: shift-mod ( n s w -- n )
[ shift ] dip 2^ wrap ; inline