#include <iostream.h > void print(const int num){
int *pnum;
int onum=num;
int i=0;
for(;onum!=1 ¦ ¦onum!=0;i++){
*(pnum++)=onum%2;
onum/=2;
}
*pnum=onum;
for(;i!=0;i--)
cout < <*(pnum--);
} void main(){
int num=123456789;
cout < <"二进制的值为:";
print(num);
cout < < '\n ';
}
这个程序哪错了,请指教
int *pnum;
int onum=num;
int i=0;
for(;onum!=1 ¦ ¦onum!=0;i++){
*(pnum++)=onum%2;
onum/=2;
}
*pnum=onum;
for(;i!=0;i--)
cout < <*(pnum--);
} void main(){
int num=123456789;
cout < <"二进制的值为:";
print(num);
cout < < '\n ';
}
这个程序哪错了,请指教
#include <iostream.h > void print(const int num){
int bitBuf[32];
int *pnum = &bitBuf[0];
int onum=num;
int i=0;
for(;onum!=1 ¦ ¦onum!=0;i++){
*(pnum++)=onum%2;
onum/=2;
}
*pnum=onum;
for(;i!=0;i--)
cout << *(pnum--);
} void main(){
int num=123456789;
cout < <"二进制的值为:";
print(num);
cout << '\n ';
}
建议转换程序改为void print(const int num) {
unsigned int mask = 0x80000000;
for(int i=0;i<32;i++) {
if(mask & (unsigned int)num)
count << "1";
else
count << "0";
mask >>= 1;
}
}
如果不需要前面的若干零,可以考虑void print(const int num) {
unsigned int mask = 0x80000000;
int flag = 0;
for(int i=0;i<32;i++) {
if(mask & (unsigned int)num) {
flag = 1;
count << "1";
}
else if(flag)
count << "0";
mask >>= 1;
}
}