Java查找int中第一個為1的bit位置


public class BinarySearch {
	// find first bit which is 1 from left to right
	public static int search(int d) {
		int r = 0;
		if ((d & 0xffff0000) != 0) {
			d >>>= 16;
			r += 16;
		}
		if ((d & 0xff00) != 0) {
			d >>>= 8;
			r += 8;
		}
		if ((d & 0xf0) != 0) {
			d >>>= 4;
			r += 4;
		}
		if ((d & 0x0c) != 0) {
			d >>>= 2;
			r += 2;
		}
		if ((d & 0x02) != 0) {
			d >>>= 1;
			r += 1;
		}
		if ((d & 0x01) != 0) {
			r += 1;
		}
		return r;
	}

	// find first bit which is 1 from right to left
	public static int searchReserve(int d) {
		int r = 0;
		if ((d & 0xFFFF) == 0) {
			d >>= 16;
			r += 16;
		}
		if ((d & 0xFF) == 0) {
			d >>= 8;
			r += 8;
		}
		if ((d & 0x0F) == 0) {
			d >>= 4;
			r += 4;
		}
		if ((d & 0x03) == 0) {
			d >>= 2;
			r += 2;
		}
		if ((d & 0x01) == 0) {
			r += 1;
		}
		return r;
	}
}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM