java - I need help on Bit Twiddling -
i love see people writing bit twiddling code can't understand @ all. gone through hacker's delight , http://graphics.stanford.edu/~seander/bithacks.html, failed understand anything.
for example:
how come 1 | 2
returns 3
or how come a ^=b; b ^= a; ^=b;
swap values etc...
one method:
private t[] ensurecapacity(int mincapacity) { if (tmp.length < mincapacity) { // compute smallest power of 2 > mincapacity newsize |= newsize >> 1; int newsize = mincapacity; newsize |= newsize >> 2; newsize |= newsize >> 4; newsize |= newsize >> 8; newsize |= newsize >> 16; newsize++; if (newsize < 0) // not bloody likely! newsize = mincapacity; else newsize = math.min(newsize, a.length >>> 1); @suppresswarnings({"unchecked", "unnecessarylocalvariable"}) t[] newarray = (t[]) new object[newsize]; tmp = newarray; } return tmp; }
what below likes doing:
int newsize = mincapacity; newsize |= newsize >> 1; newsize |= newsize >> 2; newsize |= newsize >> 4; newsize |= newsize >> 8; newsize |= newsize >> 16; newsize++;
or
newsize = math.min(newsize, a.length >>> 1);
better use >>
or >>>
operator mean after joshua bloch fixed broken binary search understand it's safe use >>>
instead >>
. please , if there tutorial above mentioned source appreciate much.
what easiest way calculate output of bits example 1 | 2 = 3
?
i mean don't know how bit form looks except use calculator or something.. there easiest way calculate these things without in mind?
what easiest way calculate output of bits example 1 | 2 = 3.
write out numbers binary. how numbers represented.
00000001 | 00000010 = 00000011
Comments
Post a Comment