📅  最后修改于: 2023-12-03 14:53:42.575000             🧑  作者: Mango
在计算机中,数字一般以二进制形式存储和操作。因此,针对某些算法或者任务,需要将数字转换为二进制数。本文将介绍如何将指定范围内的数字转换为二进制数。
对于每个数字,我们可以通过移位运算将其转换成二进制数。具体而言,对于每个数字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
本文介绍了如何将指定范围内的数字转换为二进制数。具体而言,我们通过移位运算将数字转换成二进制数,并将当前位的二进制数记录在字符串中。最后将字符串加入到返回结果中。这一过程可以用简单的代码实现,方便易用。