如果要將整數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...