add toggle-bit word to math.bitwise
							parent
							
								
									9d03a591cf
								
							
						
					
					
						commit
						a4860c3173
					
				| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue