📌  相关文章
📜  将 [L, R] 范围内的所有数字转换为二进制数(1)

📅  最后修改于: 2023-12-03 14:53:42.575000             🧑  作者: Mango

将 [L, R] 范围内的所有数字转换为二进制数

在计算机中,数字一般以二进制形式存储和操作。因此,针对某些算法或者任务,需要将数字转换为二进制数。本文将介绍如何将指定范围内的数字转换为二进制数。

实现思路

对于每个数字,我们可以通过移位运算将其转换成二进制数。具体而言,对于每个数字num,我们可以不断将其向右移一位,这样就可以得到最低位的二进制数,然后将其与1按位与,即可得到当前位的二进制数。

代码实现

以下是一个C++实现的例子,用于将[L,R]范围内的数字转换为二进制数:

vector<string> getBinaryRepresentation(int L, int R) {
    vector<string> res;
    for(int i=L;i<=R;i++){
        string s = "";
        int temp = i;
        for(int j=0;j<32;j++){
            if(temp & 1) s = "1" + s;
            else s = "0" + s;
            temp >>= 1; 
        }
        res.push_back(s);
    }
    return res;
}

该函数返回一个vector,其中每个元素是一个字符串,表示一个数字的二进制表示。整体思路就是对每个数字进行32次循环,每次循环都将其向右移一位,并将当前位的二进制数记录在字符串s中。最后将s加入到返回结果中。

使用示例

以下是实例用法:

vector<string> res = getBinaryRepresentation(1,5);
for(auto s : res) cout << s << endl;

该代码会将1~5的数字转换为二进制数,并输出如下结果:

00000000000000000000000000000001
00000000000000000000000000000010
00000000000000000000000000000011
00000000000000000000000000000100
00000000000000000000000000000101
总结

本文介绍了如何将指定范围内的数字转换为二进制数。具体而言,我们通过移位运算将数字转换成二进制数,并将当前位的二进制数记录在字符串中。最后将字符串加入到返回结果中。这一过程可以用简单的代码实现,方便易用。