解释如下问题:c++
vc++6.0中一个int类型的变量所能存储的数字的范围是多少算法
int 类型变量所能储存的最大整数用十六进制表示是: 7FFFFFFFspa
int 类型变量所能存储的绝对值最大的负整数用十六进制表示是:80000000.net
最小负数的二进制代码是多少blog
最大正数的二进制代码是多少ci
已知一个整数的二进制代码求出原始数字 get
数字超过最大整数会怎样博客
不一样类型数据的相互转化table
举个例子就能明白上面的问题:变量
设置为一个char类型的变量,赋值一个int类型的值。
char i = 0 …… 128
printf("%d",i);
由于char只有一个字节,因此int类型高位会被截掉
对应的二进制数字 | 十进制数字 |
0000 0000 | 0 |
0000 0001 | 1 |
0000 0010 | 2 |
…… | …… |
0111 1111 | 127 |
1000 0000 | -128 |
1000 0001 | -127 |
1111 1111 | -1 |
经过这个表,能够看出来,当数字是127时,对应的二进制是 0111 1111,数字再加1,变成了128,二进制成了 1000 0000。由补码的知识能够知道,当最高位是1的时候,表示是一个负数,使用补码的运算法则,能够获得一个十进制数 -128。也就是说,当输入一个数字128,输出的倒是 -128。继续加1,输出的值会从 -128,-127,-126……直到-1 ,二进制(1111 1111)2
这是用char类型作了一个实验,int的字节数多,取值范围要大的多,可是原理都是同样的。
学PHP的小蚂蚁 博客 http://my.oschina.net/woshixiaomayi/blog