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