关于以二进制格式输出long int的问题

来源:百度知道 编辑:UC知道 时间:2024/06/20 11:59:32
下面是我编的一个小程序(看起来长,其实里面废话很多)
当i=2147483648,或i更大时,程序就会无法显示,这是什么原因呢?
还有double类型和负整数的二进制格式输出是怎么样的?或者说存不存在?
#include <iostream>
using namespace std;

void test(unsigned long int num);

int main() {
for(int w = 10; w > 0; w--){
long int x;

cout<<"请输入一个整数:";
cin>>x;
test(x);
}
return 0;
}

void test(unsigned long int num){
register long int i;
int j=0,t;
cout<<"除多少个2:";
cin >> t;
t?i=(2147483648/(t*2)):i=2147483648;

for(i;i>0;i = i / 2){
(num & i) ? cout << "1" : cout << "0" ;
j++;
if(j==4){j=0;cout<<" " ;}
}
cout << "\nEND\n";
}
一般我们用的系统是不是都是32位的啊?
16位的编译环境是哪种啊?

在32位的编译环境
unsigned long 应该是可以达到0~4294967295的
可是为什么我设置i在2147483648=(4294967295+1)/ 2
就无法正常输出了

第一个问题! 超出范围了!!
注意一下 就算 unsigned long 也就是41乙左右` 那才10位数
所以。。。表示更大的数需要用数组存放`分位存放

double 请你回顾 课本` 看看double 是怎么在内存中存放的
它存放的方式和 int 类型就不同
** E **
如果我没记错` 应该是这样子`

4294967295+1 就益出拉~!!!
怎么会得到2147483648 呢?