二进制不同位数

    xiaoxiao2021-03-25  72

    世界上有10种人,一种懂二进制,一种不懂。

    那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么? 

    对于这道题目,首先把对应的十进制整数转换为二进制,然后对比两个二进制,得出结果。

    至于用什么来存储二进制,一个是用数组来存储,如果考虑空间问题,可以用队列来存储,而且队列可能更快。

    下面两种方法都进行一遍实现。

    首先是用数组来实现

    #include using namespace std; int BinaryDiff(int m,int n) { int mm[32];//存储参数m的二进制格式 int nn[32];//存储参数n的二进制格式 int m_len=0,n_len=0;//算出m和n的二进制最大的位数 int diff=0;//不同个数 for (int i = 0; i < 32; i++) { nn[i] = 0; mm[i] = 0; } /* *转换成为二进制 */ for (int i=0; m;i++,m_len++) { mm[i] = m % 2; m = m / 2; } for (int i = 0; n; i++, n_len++) { nn[i] = n % 2; n = n / 2; } //比较不同位数 if (m_len >= n_len) { for (int i = 0; i < m_len; i++) { if (mm[i]!=nn[i]) { diff++; } } } else { for (int i = 0; i < n_len; i++) { if (mm[i] != nn[i]) { diff++; } } } return diff; } int main(){ int m,n; cout << "input m:" << endl; cin >> m; cout << "input n:" << endl; cin >> n; cout << BinaryDiff(m,n); return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-26016.html

    最新回复(0)