C语言数据类型的介绍,类型的基本归类,整型在内存中的存储,原码、反码、补码,大小端等介绍

文章目录

  • 前言
  • 一、数据类型的介绍
      • 类型的意义
    • 1. 类型的基本归类
      • (1). 整型家族
      • (2). 浮点数家族
      • (3). 构造类型
      • (4). 指针类型
      • (5). 空类型
  • 二、整型在内存中的存储
    • 1. 原码、反码、补码
    • 2. 大小端介绍
        • 写一个程序判断你的电脑用大端还是小端字节序排列
    • 3. 练习
  • 总结


前言

C语言数据类型的介绍,类型的基本归类,整型在内存中的存储,原码、反码、补码,大小端介绍,以及练习


一、数据类型的介绍

char // 字符数据类型 // 1
short // 短整型 // 2
int // 整型 // 4
long // 长整型 // 4 / 8
long long // 更长的整型 // 8
float // 单精度浮点型 // 4
double // 双精度浮点型 // 8
  • long 在32位电脑上位 4 个字节, 64位电脑上 8 个字节。
  • long 在标准中只定义了 sizeof(long) >= sizeof(int)
  • long long 是 c99 定义的新的类型

类型的意义

  1. 使用这个类型开辟内存空间的大小(大小决定了使用范围)。
  2. 计算机如何看待内存空间的视角,若为整型,则认为它是整数,若为浮点型,就认为浮点数。

1. 类型的基本归类

1:40

(1). 整型家族

  • char类型在内存中存储以ASCII码值的形式存储,所以也归入整型家族。
  • 除了char类型
char
unsigned char
signed char
------------------
short
unsigned short
signed short
------------------
int
unsigned int
signed int
------------------
long
unsigned long
signed long
------------------
long long
unsigned long long
signed long long
------------------
float
unsigned float
signed float
------------------
double
unsigned double
signed double

(2). 浮点数家族

- float
- double

(3). 构造类型

  • 每创建一个数组,相当于构造了一个类型。
  • 比如 int arr[10] = {0};
  • 创建的类型为 int [10] 类型。
- 数组类型
- 结构体类型 struct
- 枚举类型 enum
- 联合类型 union

(4). 指针类型

- int* pi;
- char* pc;
- float* pf;
- void* pv;

(5). 空类型

  • void 表示空类型
  • 通常应用于函数的返回值类型、函数的参数、指针类型。

二、整型在内存中的存储

1. 原码、反码、补码

  • 计算机中的整数右三种2进制表示方法即原码、反码和补码。
  • 三种表示方法均有符号位数值位两部分,符号位都是用0表示正,用1表示负
  • 数值为 正数的原码、反码、补码都相同。
  • 负整数的三种表示方法各不相同。
    • 原码: 直接将数值按照正负数的形式翻译成二进制就可以得到原码。
    • 反码: 原码符号位不变,其余位数按位取反得到反码。
    • 补码: 反码加1,得到补码。
  • 对于整数在内存中存放的是补码
  • 原因如下
  • 在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;
  • 同时,加法和减法也可以统一处理(CPU只有加法器)此外,补码与源码相互转换,其运算过程是相同的,不需要额外的硬件电路。
    比如(以1-1)为例:
    cpu只有加法器,所以可以理解为 1 + (-1)
1 的原码
00000000000000000000000000000001
-1 的原码
10000000000000000000000000000001
1 + -1 
10000000000000000000000000000010 ---- 结果为-2,显然不合理
-------------------------------------------------------------
若用补码
1 的补码 (正数原码和补码相同)
00000000000000000000000000000001
-1 的原码
10000000000000000000000000000001
-1 的反码
11111111111111111111111111111110
-1 的补码
11111111111111111111111111111111
此时 1 的补码 加 -1 的补码
00000000000000000000000000000001 +
11111111111111111111111111111111
100000000000000000000000000000000
结果有33个比特位,但整型只能由32个比特位,最高位的1省去,得到0

2. 大小端介绍

  • 内存中的数据以二进制位存储,但可以以16进制显示,方便我们观察。
  • 若现在有整数的二进制序列为
  • 00010001001000100011001101000100
00010001001000100011001101000100 --- 这个为内存中的二进制位
将这个二进制位转化为16进制,方便说明
0x 11 22 33 44
见下图

在这里插入图片描述

  • 大小端排列取决于硬件。
写一个程序判断你的电脑用大端还是小端字节序排列
#include <stdio.h>
int main()
{int a = 1;int* pa = &a;char* pb = (char*)pa;if (1 == *pb){printf("小端\n");}else if(0 == *pb){printf("大端\n");}else{printf("奇怪了\n");}return 0;
}

3. 练习

// 1. 输出什么
#include <stdio.h>
int main()
{char a = 1;signed char b = -1;unsigned char c = -1;printf("a=%d,b=%d,c=%d", a, b, c);// 1 -1 255return 0;
}
// 2.输出什么
#include <stdio.h>
int main()
{char a = -128;printf("%u\n", a);// 4294967168return 0;
}
// 3. 输出什么
#include <stdio.h>
int main()
{char a = 128;printf("%u\n", a);// 4294967168return 0;
}
// 4. 输出什么
#include <stdio.h>
int main()
{int i = -20;unsigned int j = 10;printf("%d\n", i + j); // -10return 0;
}

总结

C语言数据类型的介绍,类型的基本归类,整型在内存中的存储,原码、反码、补码,大小端介绍,以及练习

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/3700.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Collection与数据结构] PriorityQueue与堆

1. 优先级队列 1.1 概念 前面介绍过队列&#xff0c;队列是一种先进先出(FIFO)的数据结构&#xff0c;但有些情况下&#xff0c;操作的数据可能带有优先级&#xff0c;一般出队列时&#xff0c;可能需要优先级高的元素先出队列&#xff0c;该中场景下&#xff0c;使用队列显然…

自动化机器学习流水线:基于Spring Boot与AI机器学习技术的融合探索

&#x1f9d1; 作者简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

Python常用包介绍

数据处理 1.numpy&#xff08;数据处理和科学计算&#xff09; import numpy as np np.set_printoptions(precision2, suppressTrue) # 设置打印选项&#xff0c;保留两位小数&#xff0c;禁止科学计数法arr np.arange(1, 6) # 使用arange函数创建数组 print(arr)# 输出&…

深度学习下的视觉SLAM综述

作者&#xff1a;黄泽霞&#xff0c;邵春莉 来源&#xff1a;《机器人》 编辑&#xff1a;东岸因为一点人工一点智能 深度学习下的视觉SLAM综述到目前为止&#xff0c;深度学习与SLAM的结合已经在视觉里程计、场景识别与全局优化等各种任务中取得了显著的成果。同时&#xf…

Prompt Engineering,提示工程

什么是提示工程&#xff1f; 提示工程也叫【指令工程】。 Prompt发送给大模型的指令。比如[讲个笑话]、[用Python编个贪吃蛇游戏]、[给男/女朋友写情书]等看起来简单&#xff0c;但上手简单精通难 [Propmpt]是AGI时代的[编程语言][Propmpt]是AGI时代的[软件工程][提示工程]是…

线上申报开放时间!2024年阜阳市大数据企业培育认定申报条件、流程和材料

2024年阜阳市大数据企业培育认定申报条件、流程和材料&#xff0c;线上申报开放时间整理如下 一、2024年阜阳市大数据企业培育认定申报要求 &#xff08;一&#xff09;经营范围 申请认定的企业应当从事以下生产经营活动&#xff1a; 1.从事数据收集、存储、使用、加工、传输、…

使用linux,c++,创作一个简单的五子棋游戏

#include <iostream> #include <vector> #include <unordered_map> using namespace std; // 棋盘大小 const int BOARD_SIZE 15; // 棋子类型 enum ChessType { EMPTY, BLACK, WHITE }; // 棋盘类 class ChessBoard { private: vect…

CHiME-8多通道远场语音识别Baseline介绍

语音领域每年都有很多比赛&#xff0c;每个比赛都有自己的侧重点&#xff0c;其中CHiME系列比赛的侧重点就是多通道远场语音识别&#xff0c;与其他的语音识别比赛有所区别的是&#xff0c;CHiME提供分布式麦克风和麦克风阵列数据&#xff0c;这样可以选择合适的前端算法以降低…

创建Spring Boot项目

选择Maven Archetype,之后再Archetype选择webapp 两个都打勾 这是当前的打勾 这个是以后都默认勾上 打开对应的路径&#xff0c;用vscode打开settings.xml 加入国内源 阿里云 若没有此文件可上网查找 若jar包出现问题&#xff0c;可在repostitory文件内全删除 之后在Maven刷…

第12章 最佳的UI体验——Material Design实战

第12章 最佳的UI体验——Material Design实战 其实长久以来&#xff0c;大多数人都认为Android系统的UI并不算美观&#xff0c;至少没有iOS系统的美观。以至于很多IT公司在进行应用界面设计的时候&#xff0c;为了保证双平台的统一性&#xff0c;强制要求Android端的界面风格必…

HarmonyOS开发案例:【 自定义弹窗】

介绍 基于ArkTS的声明式开发范式实现了三种不同的弹窗&#xff0c;第一种直接使用公共组件&#xff0c;后两种使用CustomDialogController实现自定义弹窗&#xff0c;效果如图所示&#xff1a; 相关概念 [AlertDialog]&#xff1a;警告弹窗&#xff0c;可设置文本内容和响应回…

了解HTTP代理服务器:优势、分类及应用实践

在我们日常的网络使用中&#xff0c;我们经常听到HTTP代理服务器这个术语。那么&#xff0c;HTTP代理服务器到底是什么&#xff1f;它有什么优势和分类&#xff1f;又如何应用于实践中呢&#xff1f;让我们一起来了解一下。 HTTP代理服务器是一种位于客户端和服务器之间的中间…

图像处理基础知识

图像处理基础知识 图像 1、模拟图像 模拟图像&#xff0c;又称连续图像&#xff0c;是指在二维坐标系中连续变化的图像&#xff0c;即图像的像点是无限稠密的&#xff0c;同时具有灰度值&#xff08;即图像从暗到亮的变化值&#xff09;。 2、数字图像 数字图像&#xff0…

Python基础知识—运算符和if语句(二)

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》 《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 1.输入和输出函数1.1输出函数1.2输入函数 2.常见运算符2.1赋值运算符2.2比较运算符2.3逻辑运算符2.4and逻辑与2.5or逻辑或2.6not逻…

ceph介绍

一、前言 Ceph 是一个完全分布式的系统&#xff0c;它将数据分布在整个集群中的多个节点上&#xff0c;以实现高可用性和容错性&#xff0c;ceph支持对象存储、块存储、文件存储所以被称为统一存储&#xff0c;ceph的架构由以下组件组成:mon、mgr、osd、mds、cephfs、rgw&#…

深度学习Day-14:RNN实现心脏病预测

&#x1f368; 本文为&#xff1a;[&#x1f517;365天深度学习训练营] 中的学习记录博客 &#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制] 要求&#xff1a; 本地读取并加载数据&#xff1b;了解循环神经网络RNN的构建过程&#xff1b;测试集accuracy达到87%…

自己搭建的大疆无人机RTMP流媒体服务延迟太大

流程&#xff1a;无人机摄像头->图传->遥控器->流媒体服务器->取流播放&#xff0c;延迟有10秒来的&#xff0c;大家有没有什么好的方案。

C# 结合JavaScript实现手写板签名并上传到服务器

应用场景 我们最近开发了一款笔迹测试功能的程序&#xff08;测试版&#xff09;&#xff0c;用户在手写板上手写签名&#xff0c;提交后即可测试出被测试者的心理素质评价分析。类似功能的场景还比如&#xff0c;在银行柜台办理业务&#xff0c;期间可能需要您使用手写设备进…

2023最新!nginx安装配置保姆级教程

2023最新!nginx安装配置保姆级教程 这篇文章了参考了这位的教程:https://blog.csdn.net/qq_36838700/article/details/129971765 导航 文章目录 2023最新!nginx安装配置保姆级教程一、nginx下载二、编译安装nginx安装pcre安装openssl、zlib、gcc依赖安装nginx 二、拓展 一、n…

低空经济+飞行汽车:载人无人机技术详解

低空经济与飞行汽车是近年来备受关注的话题。随着科技的不断进步&#xff0c;尤其是无人机技术的快速发展&#xff0c;飞行汽车已经从科幻概念逐渐变为现实。以下是对低空经济与飞行汽车&#xff0c;特别是载人无人机技术的详解&#xff1a; 1. 低空经济&#xff1a; 定义&…