众所周知,十进制转二进制的常用方法是除2取余法。这种方法刚开始学的时候感觉很巧妙,可是我后面越想越不对劲,这不是多此亿举吗?
举个例子,假设有一个short类型数据为11,并且我的系统中short长度为16bit,那么它在内存中的表示应为000000000001011,那么很明显,我们能直接取1011(先不考虑负数)。而如果用除二取余的话,就算使用位运算符,效率也明显比前一种方法慢了至少10倍。
这是网上的十进制转二进制方法
int main(){
cin>>n;
while(n!=0){
ans[len] = n % 2;
len++;
n = n / 2;
}
for(int i=len-1;i>=0;i--){
printf("%d",ans[i]);
}
return 0;
}
那么有没有一种数据结构或函数(C++),它可以直接获取内存中的二进制数据,并把每个值插入到一个每个数据只有一位的整型数组呢?(假设这种整型叫bit,函数叫bin(),那么对于一个short数据18,则可以输入以下代码)
int main(){
bit n[16];
bin(n);
return 0;
}