5.5

来源:互联网 发布:洛阳青峰网络人事 编辑:程序博客网 时间:2024/05/01 16:55

Topic 5.5 Write a function to determine the number of bits required to convert interger A to interger B.

方法1XOR represents a bit that is different between A and B. Then shift the XOR result.

改进: To make it better, use c=c&(c-1) to clear the leaset significant bit.

public class c5_3 {public static int bitSwapRequired(int a, int b) {int count = 0;for (int c = a ^ b; c != 0; c = c >> 1) { count += c & 1;}return count;}public static int bitSwapRequired2(int a, int b){int count = 0;for (int c = a ^ b; c != 0; c = c & (c-1)) {count++;}return count;}public static void main(String[] args) {int a=15;int b=16;System.out.println(a+":"+Integer.toBinaryString(a));System.out.println(b+":"+Integer.toBinaryString(b));System.out.println("Required number of bits: " + bitSwapRequired(a, b) + " " + bitSwapRequired2(a, b));}}
//结果15:111116:10000Required number of bits: 5 5



 

原创粉丝点击