如果要將整數n轉換為m,需要改變多少個bit位?

2021-09-28 20:53:43 字數 1451 閱讀 5198

如果要將整數n轉換為m,需要改變多少個bit位?

both n and m are 32-bit integers.

您在真實的面試中是否遇到過這個題?  是

example 1:

input: n = 31, m = 14

output: 2

explanation:

(11111) -> (01110) there are two different bits.

example 2:

input: n = 1, m = 7

output: 2

explanation:

(001) -> (111) will change two bits.

你能想出幾種方法?

第一種解法:模擬二進位制的運算

public class solution 

// 建立兩個陣列,儲存a和b的二進位制

int alist = new int[32];

int blist = new int[32];

getbinary(alist,a);

getbinary(blist, b);

// 比較兩個陣列不一致的位數

for(int i=0;i<32;i++)

}return count;

}/**

* 獲取數值的二進位制

* 正數的原碼,反碼,補碼是一樣的

* 負數的反碼等於原碼取反,補碼等於反碼加1

* @param list

* @param n

*/public void getbinary(int list,int n)

// 如果是最小的負數-2147483648,沒法轉換成正數範圍0~2147483647 -1~-2147483648

// 最開始的時候沒有考慮到界限值

if(n==-2147483648)

if(n<0)

stringbuilder astr = new stringbuilder(integer.tobinarystring(a));

stringbuilder bstr = new stringbuilder(integer.tobinarystring(b));

// 遍歷字串

if(astr.length()>bstr.length())else

return count;

}public int getcount(stringbuilder maxstr,stringbuilder minstr)

}// 比較位數大的字串的剩餘字元,只要等於1.count++

for(int i=minstr.length();i}

return count;

}public static void main(string args)

}

M進製轉換為N進製數

給定乙個十進位制數m,以及需要轉換的進製數n。將十進位制數m轉化為n進製數 輸入為一行,m 32位整數 n 2 n 16 以空格隔開。為每個測試例項輸出轉換後的數,每個輸出佔一行。如果n大於9,則對應的數字規則參考16進製制 比如,10用a表示,等等 比如 輸入 7 2 輸出 111 進製轉換的思路...

從M進製轉換為N進製

從m進製轉換為n進製 internal class mbase2nbase ctor m進製值字串 m進製 如10 引數值在2 36的範圍內 n進製 如8 則意味著從10進製轉換成8進製.引數值在2 36的範圍內 public mbase2nbase string mvalue,int m,int ...

lua之m進製轉換為n進製 任意進製轉換演算法

夠無聊的寫這個,為防止需要的人也無聊一遍,寫個吧 演算法有n種,但是,咱們一種就夠用了 1 陣列倒序排列 2local function orderbydesc input 3local output 4local count input 5while count 0do6 table.insert...