小蚂蚁学习C语言(29)——C语言补码(下)

解释如下问题: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

相关文章
相关标签/搜索