有符号
int long
#include
int main()
{
int a = 10; //4个字节储存
int b = -10; //4个字节储存
long d = 20; //32位操作系统四个字节储存,64位操作系统八个字节储存
// 为了统一八个字节使用long long定义
long long c = 20; //八个字节
// 之所以使用不同定义,因为储存的不同。支持的最大数不同。为了更大的数故用不同的类型。
printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);
return 0;
}
进制
#include
int main()
{
int d = 0b100; //0b 二进制
int e = 0xB; //0x 十六进制
int f = 010; //0 开头八进制
printf("d=%d,e=%d,f=%d",d,e,f);
return 0;
}
无符号
unsigned int = 10;
insigned int = 20;
有符号和无符号的区别
http://www.cnblogs.com/lazycoding/archive/2011/03/21/unsigned-signed.html
当我们指定一个数量是有符号类型时,此时,最高数称为“符号位”。为1时,表示该数为负值,为0时表示为正值。
就作用来说是存储的位数,以及最大数的不同。
可以这样说就是存储的多少问题。
应用举例
存储年龄和库存两个变量
其中年龄使用无符号,库存有符号。
这样存储的位数不同。所占据的空间也不相同,程序的大小也不相同。
位数
8位数字能储存的最大(有符号)的情况下-128~127
最高位为1时为负数,为0时为正数
为负数的时候除最高位即符号位外0变1,1变0 这为反码
然后在加1为补码
所以在进行储存的时候
11111111 为-1
而1000000 为-128
而10000001 为-127
这些和原码,反码补码有关
反码符号位不变(最高位不变),0变1,1变0
补码在反码的基础上加1
128转换为二进制为10000000
然后反码
11111111
在变成补码(一个字节)(有符号存储的时候)
10000000
这个时候就为-128
而没有符号储存的时候
8个位数全为
11111111
这个为11111111
而有符号位进行 表示的时候
11111111的第一位为符号位
先从补码转换成反码
减1,为11111110
在将1变0,0变1为原码
10000001
这个为-1
所以
综上
二进制值(1字节)
十进制值
10000000→
-128
10000001→
-127
10000010→
-126
10000011→
-125
11111110→
-2
11111111→
-1
最大的区别还是在于是否有符号位即是否加unsigned
演示一下哈
#include
int main()
{
__int8_t a = 127;
printf("%d\n",a);
return 0;
}
输出结果为127
#include
int main()
{
__int8_t a = 128;
printf("%d\n",a);
return 0;
}
输出结果为-128
原因就是上面。
界限
无符号数: 0 ----------------- 255
有符号数: -128 --------- 0 ---------- 127
#include
int main()
{
__int8_t a = 128;
__uint8_t b = 128;
printf("%d,%d\n",a,b);
return 0;
}
输出结果为 -128 128
#include
int main()
{
__int8_t a = 128;
__uint8_t b = 255;
printf("%d,%d\n",a,b);
return 0;
}
结果分别为-128 255
#include
int main()
{
__int8_t a = 128;
__uint8_t b = 256;
printf("%d,%d\n",a,b);
return 0;
}
输出结果为-128 0
#include
int main()
{
__int8_t a = 128;
__uint8_t b = 257;
printf("%d,%d\n",a,b);
return 0;
}
输出结果-128 1
#include
int main()
{
__int8_t a = 129;
__uint8_t b = 257;
printf("%d,%d\n",a,b);
return 0;
}
输出结果为-127 1
以上结果为一个字符的时候进行输出。
有溢出
__int64_t c = 34;
在每一个平台上为64位,为longlong类型,这样就基本上就不会出现问题了
另
http://kooyee.iteye.com/blog/349491
http://www.360doc.com/content/12/0131/10/6973384_183067995.shtml
*******__未完待续*******
更多;https://www.iming.info/2018/02/08/328.html