public static void flipBitmapRange ( long [ ] bitmap , int start , int end ) { if ( start == end ) { return ; } int firstword = start / 64 ; int endword = ( end - 1 ) / 64 ; bitmap [ firstword ] ^= ~ ( ~ 0L << start ) ; for ( int i = firstword ; i < endword ; i ++ ) { bitmap [ i ] = ~ bitmap [ i ] ; } bitmap [ endword ] ^= ~ 0L >>> - end ; }
flip bits at start start + 1 ... end - 1