详谈数据的存储问题

数据系列文章目录

第一章 C语言的常数知识讲解


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


一、数据类型有哪些?

//常见的整数类型:   名字  范围                                                                   字节数

int                          / /  整形 (-2147483648~2147483647)                      / /  4

short  [int]            / /  短整型(-32768 ~32767)                                      / /   2

long   [int]            / /  长整型(-2147483648~2147483647)                  / /   4/8(分编译器)

long long [int]     / /   更长整型(-9223372036854775808~9223372036854775807) / /8

char                     / /   字符类型的整形( -128~127)                               / /    1

//常见的浮点型类型:  名字 范围                                                             字节数

flaot                     / /   单精度浮点数 (-3.4E+38 ~ 3.4E+38                  / /     4

double                / /    双精度浮点数(1.79E+308 ~ +1.79E+308          / /     8

1.1  数据具体的类型

整形家族:

int:

       signed int                      / /有符号的整形

       unsigned int                 / /无符号的整形   (0~4294967295

char:

       signed char                  / /有符号的字符类型

       unsigned char             / / 无符号的字符类型 (0~255

long【int】:

       signed long 【int】     / /有符号的长整形

       unsigned long 【int】 / /无符号的长整型    (0~4294967295

short【int】:

       signed short 【int】    / /有符号的短整形

       unsigned short 【int】/ /无符号的短整型     (0~65535)

浮点数家族:

float

double

构造类型:

~~~   数组类型

~~~   结构体类型  struct

~~~   枚举类型  enum

~~~   联合类型  union

指针类型:

int*    pi;

char* pa;

float* pb;

void* pc;     //空类型指针

空类型:

void   表示空类型(无类型)

二、整形

1.在内存中的存储形式

整形:在内存中存储的形式为补码的形式

整数表示包括三种类型:原码,反码,补码

原码:我们一般输入为原码的十进制形式(或者八进制/十六进制)补码:在内存中的存储形式 反码:(中间态)

   正数的原码,反码,补码都是一样的

   负数的原码,反码,补码,各不相同        负数的符号位为1,正数的符号位为0

   {

      反码为原码数符号位不变,符号位为高位,第一位

     int  a = -10;

    // 原码   10000000    00000000    00000000    00001010

                 符号位

   //  反码   111111111     11111111     11111111      11110101

      补码为反码加1所得

   //   补码  111111111      11111111     11111111     11110110  //a=10 在内存中存储形式

  }

 

2.练习

代码如下(示例):

求解下面a,b,c三个的值

#include <stdio.h>
int main()
{
		char a = -1;  //-1截断后存储到a中
		//10000000000000000000000000000001	-1的原码
		//11111111111111111111111111111110	-1的反码
		//11111111111111111111111111111111  -1的补码
		//11111111 - a
		
		signed char b = -1;
		//11111111111111111111111111111111  -1的补码
		//11111111 - b
		
	
		unsigned char c = -1;
		//11111111111111111111111111111111  -1的补码
		//11111111 - c
		
		printf("a=%d,b=%d,c=%d", a, b, c);
		//-1 -1 
		//11111111111111111111111111111111     a/b
		//11111111111111111111111111111110     
		//10000000000000000000000000000001
	
		//11111111                              c
		//00000000000000000000000011111111
	
		return 0;
}

知识点:

 

运行结果:

 


总结

希望大家可以给个三连,支持支持萌新。

 

  • 21
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 20
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值