C语言进阶学习01

嵌入式学习-01C语言day10 1)语法格式enum 枚举名称枚举元素1,枚举元素2,...枚举元素N2)枚举常量枚举元素也称为枚举成员或枚举常量,具有如下特点:(1)枚举元素的值必须在同一枚举中是唯一的(2)枚举元素的值必须是整数类型,通常是int(3)如果没有为枚举元素指定值,编译器会自动为它们分配值,从0开始,依次递增。(4)定义枚举的时候也可以为枚举元素自定义值,需保证唯一性和整型类型。3)代码演示// 定义枚举类型,表示星期一到星期天,枚举元素的值自动分配,从0到6。 阅读详情

本部分包含数据的存储。数据类型、整形在内存中的存储、浮点型在内存中的存储解析。

笔记部分:

  • 数据的存储
    • 数据类型详细介绍
      • 类型的意义
        • 1. 使用这个类型开辟内存空间的大小(大小决定了使用范围)。
        • 2. 决定所存放数据的格式。
      • 类型的基本归类
        • 整形家族:

        • 浮点数家族:

        • 构造类型:

        • 指针类型 :

        • 空类型:

    • 整形在内存中的存储:原码、反码、补码
      • 原码、反码、补码
        • 正数的原、反、补码都相同
        • 负整数的三种表示方法各不相同。
          • 原码:直接将二进制按照正负数的形式翻译成二进制就可以。
          • 反码:将原码的符号位不变,其他位依次按位取反就可以得到了。
          • 补码:反码+1就得到补码。
      • 对于整形来说:数据存放内存中其实存放的是补码。
        • 使用补码的原因:在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。
      • 整形提升
        • 提升规则为:若最高位为“0”,则补全数据全为0;若最高位为“1”,则补全数据全为1
    • 大小端字节序介绍及判断
      • 大小端介绍
        • 大端小端的定义
          • 大端(存储)模式:是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;
          • 小端(存储)模式:是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地址中。
        • 大端小端的意义
          • 为什么会有大小端模式之分呢?这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但是在C语言中除了8 bit的char之外,还有16 bit的short型,32 bit的long型(要看具体的编译器),另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式。
        • 关于大端还是小端是根据操作系统决定的。在windows系统下,内存的地址都是从0开始往后排的但是数据本身就有高地址和低地址之分,所以数据的存储、数据的高位地址就在内存的高地址上面数据的低地址就在低地址
    • 浮点型在内存中的存储解析
      • 根据国际标准IEEE(电气和电子工程协会) 754,任意一个二进制浮点数V可以表示成下面的形式:
        • (-1)^S * M * 2^E
        • (-1)^s表示符号位,当s=0,V为正数;当s=1,V为负数。
        • M表示有效数字,大于等于1,小于2。
        • 2^E表示指数位。
      • 指数E从内存中取出还可以再分成三种情况
        • E不全为0或不全为1
          • 指数E的计算值减去127(或1023),得到真实值,再将有效数字M前加上第一位的1。
        • E全为0
          • 这时,浮点数的指数E等于1-127(或者1-1023)即为真实值。
        • E全为1
          • 这时,如果有效数字M全为0,表示±无穷大(正负取决于符号位s);

代码练习部分: 

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int check_system(int a)
{
	char* p = (char*)&a;
	/*if (*p == 1)
	{
		return 1;
	}
	else
	{
		return 0;
	}*/
	return *p;
	
}

int main()
{
	//数据的存储
	
	//设计一个程序来判断当前机器的字节序
	int a = 1;
	int ret = check_system(a);
	if (ret == 1)
	{
		printf("小端");
	}
	else
	{
		printf("大端");
	}

	//整形提升练习题

	//1.
	char b = -1;
	//11111111
	//11111111111111111111111111111111
	signed char  c = -1;
	//11111111
	//11111111111111111111111111111111
	unsigned char d = -1;
	//11111111
	//00000000000000000000000011111111
	printf("\nb=%d,c=%d,d=%d\n", b, c, d);

	//2.
	char e = -128;
	//10000000
	//10000000000000000000000010000000
	//11111111111111111111111101111111
	//11111111111111111111111110000000
	printf("%u\n", a);

	//3.
	char f = 128;
	printf("%u\n", a);

	//4.
	int g = -10;
	unsigned int h = 20;
	printf("%d", g + h);

	////5.死循环
	//unsigned int k=9;
	//for (;k > 0;k--)
	//{
	//	printf("%u\n", k);
	//}

	//6.
	char l[1000];
	for (int i = 0;i < 1000;i++)
	{
		l[i] = -1 - i;
	}
	printf("%d\n", strlen(l));

	//7.死循环
	for (unsigned char i = 0;i <= 255;i++)
	{
		printf("I'm fine");
	}

	//浮点型
	int m = 9;
	//00000000 00000000 00000000 00001001
	float* mf = &m;
	//0 00000000 00000000000000000001001
	printf("%d\n",m);
	printf("%f\n",*mf);
	
	*mf = 9.0;
	//0 10000010 00100000000000000000000


}

嵌入式学习-01C语言day08 如果一个变量专门用来存放内存地址,则它称为指针变量,通常简称为指针。我们可以通过指针间接访问内存中另一个数据。如图,指针里面存储的是变量 num 的地址,我们可以说该指针指向变量 num,通过该指针可以间接访问变量 num。一般格式****:****数据类型 *指针变量名 [=初始地址值];数据类型是指针所指向的地址处的数据类型,如 int、char、float 等。符号 * 用于通知系统,这里定义的是一个指针变量,通常跟在类型关键字的后面,表示指针指向的是什么类型的值。 阅读详情

相关推荐

嵌入式学习-01C语言day01

/ 注释内容1.1.2。

路小飞 608

chapter01语言学习入门01

Chapter 01 一支只拨鼠 1.1 哪里来的土拨鼠? go是一只出身名门望族的土拨鼠,它的祖先是Limbo,诞生于贝尔实验室,后面历经千辛万苦在Google生下Go,土拨鼠1代—2009年, 土拨鼠2代2012年,Go的出现让很多江湖大佬感到震惊, 看看有哪些仙剑的人成就了Go:(看个毛线,管你屁事,你还是慢慢修养身心吧) 1.2土拨鼠的特点? 行走江湖怎么着也要有"两下子”,看看...

流浪的coder 254

【C语言入门到进阶算法试题】68、 01子串 | 算法真题+思路参考+代码解析

题目描述 >对于长度为 N 位的一个01串,每一位都可能是0或1。   比如对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是: 00000 00001 00010 00011 00100

KJ.JK 462

C语言学习笔记---指针进阶01

初识C语言学习笔记Vlog---024C语言指针进阶前篇

m0_69455439的博客 778

【第01题】A + B | 基础输入输出,开启学习C语言打卡的序章

难度:★☆☆☆☆,开启学习C语言打卡的序章

英雄哪里出来 4万+

Turbo C官方原版V2.01:C语言编程学习的经典工具

本文还有配套的精品资源,点击获取 简介:Turbo C是Borland公司推出的一款高效的C语言集成开发环境,广泛应用于DOS系统。它以其完整的开发流程,包括编辑器、编译器、链接器和调试器而被程序员所喜爱。它支持ANSI C标准,提供丰富的库函数,便于进行文件操作和内存管理。此外,该版本还支持DOS系统调用和C语言的核心特性,如结构体和指针。尽管现代开发环境更为多样,但Tu...

weixin_42598278的博客 1299

C语言学习day25:WinAPI编程进阶01-第一个标准Windows应用程序

例如,在D盘下有一个111.txt文件,当我们用鼠标双击这个文件时将启动记事本程序(notepad.exe),此时系统会将D:\111.txt作为命令行参数传递给记事本程序的winMain函数,记事本程序得到这个文件的路径后,在窗口中显示该文件的具体内容。指定应用程序最初如何显示,例如在任务栏上正常显示、最大化到全屏显示或最小化显示关于显示类型的知识点,需要翻阅:ShowWindow函数。上一个应用程序的实例句柄,对于win32以上的应用程序来说,该参数始终=NULL,是个是历史残留。

q13407441836的博客 538

MIMIC数据库基本信息分析

一、MIMIC数据库中26张表介绍 数据库中一共有26张表,记录患者入院的各种信息,每张表的介绍如下所示。 表格名 信息 admission 患者基本信息,比如性别、种族、语言、宗教、婚姻、入院和出院时间、死亡时间等 callout 提供病人准备从ICU转出或者已经从ICU转出时相关信息 caregivers 记录医护人员信息(ID、类型、附加...

m0_37520426的博客 1万+

C语言入门学习(01)——C编程环境的搭建及HelloWorld程序

博主是大二学生,接触C语言也有两年了,这两年期间参加过不少的项目和比赛,也都拿到了还不错的成绩,暑假计划写一个C语言完全零基础入门教程,对自己的C语言学习做一个总结。同时如果自己所写的内容能帮到初学C语言的人,那真的是一件很开心的事情。 想学好C语言,一定要多多练习,因此后面的文章会有大量的练习,在这里想对初学C语言的同学们说:如果想学好C语言,一定要多多练习,每天写代码一小时,坚持两三个月,你...

Felik Zhang的博客 2万+

CAB单片机开发指南

CAB单片机开发使用指南,IDE安装及烧录注意事项

Zoebuxiangtian的博客 1558

无需Root!用VirtualXposed+JustTrustMe在安卓高版本上抓包拼多多API数据

本文详细介绍了在安卓高版本设备上无需Root权限即可抓取拼多多API数据的完整方案,通过VirtualXposed与JustTrustMe组合技术,有效绕过SSL Pinning限制。文章涵盖工具准备、环境配置、应用处理及实战分析,特别针对PDD应用的混合通信策略提供了专业解决方案,适合开发者进行竞品分析和数据采集。

weixin_28678151的博客 453

C语言:从入门到进阶笔记(完整版)

本系列适合已经接触过C语言或对C语言有基本的了解的读者观看,适合用来复习巩固和夯实基础。共18大章,每个章节分为若干个小节,部分章节备有配套的练习,并且本系列附带了三套C语言笔试题以及答案详细解析。第一章由于字数原因,以贴链接的方式展示。由于作者水平有限、时间仓促紧迫,本教学有错误和不准确之处在所难免,本人也很想知道这些错误,恳望读者批评指正!从第一章博客的更新到最后一章共历时四个月,难免会有排版、代码风格、图标运用的不一致的地方,还请谅解。文章内有很多表情包,目的是让读者在阅读过程中减少枯燥,并且有些表情

有道无术, 术尚可求。有术无道, 止于术。 1万+

大一新生应该如何学习C语言,书上代码看不懂理解不了怎么办?

大家好,我是二哥呀! 昨天有个读者问我要 C语言的学习路线,他今年刚上大一,书上的代码完全看不懂。 讲真,大一新生,一般都是零基础的纯小白,看不懂书上的代码很正常,除非是小学、初中、高中就开始卷计算机的硬核少年;或者是因为教材选的有问题。 那刚好二哥之前整理过一些学习 C语言的资料和学习方法,今天趁这个机会就再做个汇总和梳理。 推荐一本书,两门视频课,若干学习建议,看完后如果还看不懂、理解不了C语言,过来骂我、捶我,只要不要打脸就行。 01)阮一峰老师的 C语言入门教程 这个教程是开源的,采用知识共享许可

沉默王二 9万+

WIFI中CSI的读取

学习目标: 目前正在做基于WIFI的无设备定位,准备使用信道状态信息(CSI),学习一下。 目前采集数据环境已经搭建好,准备研究信号的预处理。 学习内容: 1、 信号的读取——read_bf_file函数的研究 2、 3、 4、 1. read_bf_file详解: %READ_BF_FILE Reads in a file of beamforming feedback logs. % This version uses the *C* version of read_bfee, ...

sz3076799的博客 8892

分享一些基于微信小程序开发的小游戏源码

小游戏小程序是运行在微信生态系统(或其他支持小程序的平台)中的轻量级应用程序,专为休闲游戏体验而设计的小程序子类别,小游戏小程序通常体积较小,加载速度快,用户无需等待长时间即可开始游戏。用户无需下载或安装单独的游戏应用程序,即可通过小程序入口直接进入游戏,同时小游戏小程序通常包含排行榜、分享功能等社交元素,可以增强游戏体验并促进用户参与。game.js:游戏页面的逻辑文件,包含页面数据、生命周期函数、事件处理函数等。game.wxml:游戏页面的结构文件,定义了页面的布局和组件。

xinshangdian的博客 6226

C 语言Day 01 学习总结

【代码】C 语言Day 01 学习总结。

猪猪侠 2694

某音私信接口二进制解析

本文探讨了某音私信接口的二进制请求处理过程,重点分析了请求体中的非文本字符和混合编码结构。文章详细描述了编码过程,包括使用Protocol Buffers的序列化方法将结构化数据转换为字节流,并通过Uint8Array包装成二进制数组。作者展示了如何提取和补全s.encode方法,并将其转化为Base64字符串以便在Python中解码执行

码王吴彦祖的博客 901

C语言进阶学习总结

本文总结了C语言进阶学习的关键知识点,包括数据类型、typedef使用、void特性、sizeof操作符、变量修改方式以及内存分区。重点阐述了数据类型本质是固定大小内存的别名,typedef可简化结构体定义和提高代码可移植性,void指针的特殊用法,sizeof返回无符号整型的特性,以及直接/间接修改变量的方法。最后详细分析了程序运行前后的内存分区情况,包括代码区、数据区、栈区和堆区的特点及管理方式。这些核心概念对深入理解C语言内存管理和程序设计具有重要意义。

m0_74794407的博客 969

PHP与Node.js的对比及优缺点分析

PHP和Node.js是两种常用的服务器端编程语言,它们在不同的应用场景下各有优势和劣势。本文将全方位比较PHP和Node.js的特点,以及它们在编程中的优缺点,并提供相应的源代码示例供参考。需要注意的是,本文只是对PHP和Node.js的一些优缺点进行了简要介绍,实际应用中还需要考虑其他因素,如团队经验、项目规模和预算等。最终的选择应该基于全面的评估和需求分析。PHP:PHP是一种同步阻塞的编程语言,它的处理方式是一次只处理一个请求。Node.js:Node.js的性能较高,特别适合处理高并发的请求。

ByteSparkX的博客 888

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

[C语言]一、C语言基础(01)

Code::Block是一个免费的跨平台IDE,它支持C、C++和Fortan程序的开发。Code::Block的最大特点是它支持通过插件的方式对IDE自身功能进行扩展,这使得Code::Block具有很强的灵活性,方便用户使用。Visual C++ 2010,简称VC2010,是由微软开发的独立的、免费的 C/C++ 编译工具,与Visual Basic等并列,最后微软将它们整合在一起组成了Visual Studio。

weixin_44428807的博客 3143

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【C语言】01-C语言概述

这个C语言专题,是学习iOS开发的基础。万丈高楼平地起,如果你还没有编程经验,建议你,最好是先耐心从最基础的C语言学起。此篇是C语言概述,简单地认识一下C语言。

andycheungios的博客 996

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

初始c语言01

基本了解C语言的基础知识,对c语言有大概的认识

weixin_52763477的博客 1445

C语言 01 概述

C 语言是一门的计算机编程语言,于诞生于贝尔实验室。C 语言是(Dennis Ritchie)以 B 语言为基础发展而来,因此他被称为。C 语言为什么命名为?1967 年,剑桥大学的 Martin Richards 对进行了简化,于是产生了。1969 年,美国贝尔实验室的(Ken Thompson),以 BCPL 语言为基础,设计出很简单且很接近硬件的(取 BCPL 的首字母),并且用 B 语言写了初版。1972 年,美国贝尔实验室的。

天河有尽后为涯,星海无边前作岸。 1030

c语言代码表白会动的小人_C语言实现跳动的圣诞树,自学C语言圣诞表白!

这道理放在C语言学习上也一并受用。在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历的是日积月累的学习。那么如何学习呢?当然是每天都练习一道C语言题目!!经典:如何用C语言画一个“圣诞树”,我使用了左右镜像的Sierpinski triangle,每层减去上方一小块,再用符号点缀。可生成不同层数的「圣诞树」源代码演示:#include <math.h&gt...

weixin_42593130的博客 1万+

数学建模 - 01背包问题多种解法 | C语言、Matlab、Lingo

别问我一个大学生暑假为什么只放20天,问就是数学建模! 好吧其实建模还是挺有意思的,通过学习我掌握了多种计算机语言。前几天的课上讲到了背包问题,只讲了数学上的讲法,没说代码怎么写。当时脑子一热想出了一种特殊的算法,虽然之后的课上讲到了这种想法,但是我还是花了一个下午的时间在讲之前把01背包问题的C语言解法写了出来。讲完后,我今天又把所有典型背包问题的Lingo和Matlab解法完成了。下面讲讲解法...

Robot Kevin的世界 9280
上一篇: c语言基础笔记21
下一篇: C语言进阶02
Ohrkaninchen
博客等级 码龄5年 18粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ohrkaninchen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值