美文网首页
整形数据 C

整形数据 C

作者: 小小小8021 | 来源:发表于2018-02-08 16:00 被阅读9次

有符号

int long

#include <stdio.h>

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 <stdio.h>

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 <stdio.h>

int main()
{

    __int8_t a = 127;

    printf("%d\n",a);
    return 0;
} 

输出结果为127


#include <stdio.h>

int main()
{

    __int8_t a = 128;

    printf("%d\n",a);
    return 0;
}

输出结果为-128
原因就是上面。
界限

无符号数:                        0 ----------------- 255 

有符号数:         -128 --------- 0 ---------- 127 
#include <stdio.h>

int main()
{

    __int8_t a = 128;
    __uint8_t b = 128;

    printf("%d,%d\n",a,b);
    return 0;
}
输出结果为 -128 128
#include <stdio.h>

int main()
{

    __int8_t a = 128;
    __uint8_t b = 255;

    printf("%d,%d\n",a,b);
    return 0;
}
结果分别为-128  255
#include <stdio.h>

int main()
{

    __int8_t a = 128;
    __uint8_t b = 256;

    printf("%d,%d\n",a,b);
    return 0;
}
输出结果为-128 0
#include <stdio.h>

int main()
{

    __int8_t a = 128;
    __uint8_t b = 257;

    printf("%d,%d\n",a,b);
    return 0;
}
输出结果-128  1
#include <stdio.h>

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

相关文章

  • C语言基本数据类型

    1.概述 C 语言包含的数据类型如下图所示: 2.各种数据类型介绍 2.1整型 整形包括短整型、整形和长整形。 2...

  • 整形数据 C

    有符号 int long 进制 无符号 有符号和无符号的区别 http://www.cnblogs.com/laz...

  • 数据类型

    1.概述 C 语言包含的数据类型如下图所示: 1、整形 整形分为整形常量和整形变量,常量就是我们平时所看到的准确的...

  • HeadFirst笔记系列——第四章 分割源文件(共享代码)

    C语言中的数据类型 浮点型:float double整形: short int long ...

  • 12.12 C语言数据类型、运算符基础学习

    一、C基本变量和语法 C的引入 1.程序解析: 2.C的数据类型 基本数据类型:整数类型:int:基本整形数据sh...

  • 【初识C语言】C语言基本数据类型

    C语言基本数据类型简介 1.概述 C 语言包含的数据类型如下图所示: C语言中的基本数据类型有整形、字符型、浮点型...

  • c语言进阶 c和指针(二)

    这一篇主要说一说数据 一、基本数据类型 C语言中只有四种基本数据类型——整形(字符也算是一种整形,枚举也算是一种整...

  • C语言2数据

    基础知识不够清楚,学习自《C和指针》& 《C Primer Plus》 基本数据类型 整形 提示:如果一个值被当作...

  • (iOS, Object-C)NSData转String,各进制

    Object-C NSData 转 String: 十六进制转整形: n进制转整形: 整形转 NSData: 十六...

  • 2 数据类型

    定义一个变量或者常量都必须指定一个数据类型,否则无法分配内存 整形 c++有如上的几种整形short,int,lo...

网友评论

      本文标题:整形数据 C

      本文链接:https://www.haomeiwen.com/subject/frmttftx.html