2024.04.10嵌入式第一天

news/2025/1/16 13:53:17/


# 前言

   2024年4月10号也算是有纪念意义的一天吧,什么纪念意义呢?前面博客可能也说过,本人经历过两年前端,然后因为一些不可控的原因转为java后端一年,然后前段时间因为一些原因接触了解了嵌入式这个行业,所以根据自己的想法今天又来学了嵌入式这个方面,这时候会有人问了,说博主你学这么多这么杂能不能记住?那我的回答必然是半斤八两多咯,还记得之前听过一句开玩笑的说法,说在程序员这个圈子里的鄙视链,接下来讲一讲别喷我奥,反正也不是我说的,说做C语言开发的会鄙视做C++的(C++也是种计算机语言,跟c大差不差只不过没有C语言那么底层),做C++的会鄙视做JAVA的(因为JAVA不会做这么底层的东西,做的都是些软件服务器的开发),做JAVA的会鄙视做C#的,做C#的会鄙视做Python的,更好玩的是前面说的所有语言都会不约而同的鄙视做php的(虽然说php差不多已经被淘汰了,只不过没有前面那么火,曾经也是个挺权威的语言,现在还在坚持php的大佬不要喷我!!!)但是不管是php还是java、python、c#在公司里好歹做的都是核心服务器开发,但是前端基本上都是没有什么特别复杂的业务,所以前面那些语言又不约而同的鄙视上了前端哈哈哈,但前端好歹也是程序员也是敲代码的,前端也会鄙视做测试的、运维的,但是不要管这鄙视链多长,C语言都是站在顶端的男银,那么好,我就要当人上人哈哈哈哈,希望以上提到的行业大佬不要来喷我,好歹哥们儿也是经历过前端、java才来的C语言,不然都学了也不好意思喷啊。

![07D8A8BC.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2a80ae4b907c431c936d35558872b92c~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=48&h=48&s=4701&e=png&a=1&b=f0b429)

   
   众所周知,要卷嵌入式先卷C语言,只不过我卷的比较慢,才刚刚开始,但是也是从基础学起纯纯小白一名(有嵌入式的大佬看到我这篇文章可以联系联系我,不懂就问就是我这个人的性格嗷),今天学习先了解了C语言,搭建了编程环境,当然现在在学习时间没那么专业,直接vscode起飞。
   
<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e7fbecef3a754ef9bc961edfd72fbb96~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=511&h=993&s=78733&e=png&b=1f2031" alt="image.png" width="30%" />

# 正文

接下来看看都学啥了吧这一天

![image.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/00bbd51400aa4f99b28efd5ff2ec4602~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=365&h=430&s=28591&e=png&b=1f2031)

感觉还可以,也是基础,越往后越不容易了,挑一个讲讲吧:计算机数值存储方式(原反补)
### 原码

十进制数按照:除二取余、倒序排列,得到的就是原码。

```js-   10 -> 0000 1010
 -10 -> 1000 1010
 -1 -> 1000 0001
  1 -> 0000 0001
```
问题
原码在做计算的时候会出现一些问题,比如正负数的加法运算,以及零的问题。

正负数加法
-1 + 1 = 0

```C
  1000 0001
+ 0000 0001
----------------
  1000 0010 -> -2 ?
```
正负零
+0 和 -0
十进制数字0,占了两个二进制;

```C
0000 0000
1000 0000
```
反码
为了解决上面的问题,出现了反码,反码的计算规则如下:

正数的反码就是原码本身;
负数的反码是按位取反(但符号位不变);
示例


```C
● 1 -> 0000 0001 -> 0000 0001
● -1 -> 1000 0001 -> 1111 1110
```
1111 1111 是运算完之后的结果,但要注意,这时还是反码,需要重新返回来:1000 0000 。

反码解决了正负数加法问题,但正负零的问题还是存在。

补码
正数的补码就是原码本身;

负数的补码就是在反码的基础上+1;


```C
  0000 0001
+ 1111 1111
----------------
  0000 0000
```

补码在正负数加减法运算时没问题,也不会出现正负零占两个二进制。但 1000 0000 不表示为负零,用来表示什么呢?计算机其实默认把8位有符号二进制 1000 0000 表示为 -128 。


```C 
int8_t e = 0b10000000;
printf("%d\n", e);
```
# 结尾
在嵌入式编程的学习之旅中,每一步都是重要的。从C语言的基础开始,我们逐渐探索着计算机的内部机制,了解着数值的存储方式。虽然路途可能会艰难,但正是这种不断学习、探索的过程,让我们不断成长,不断进步。让我们怀着对知识的渴望,继续前行吧!


http://www.ppmy.cn/news/1413364.html

相关文章

[leetcode] all-nodes-distance-k-in-binary-tree 二叉树中所有距离为 K 的结点

. - 力扣&#xff08;LeetCode&#xff09; 给定一个二叉树&#xff08;具有根结点 root&#xff09;&#xff0c; 一个目标结点 target &#xff0c;和一个整数值 k 。 返回到目标结点 target 距离为 k 的所有结点的值的列表。 答案可以以 任何顺序 返回。 示例 1&#xff1a…

【AcWing】蓝桥杯集训每日一题Day20|线性DP|312.乌龟棋(C++)

312.乌龟棋 312. 乌龟棋 - AcWing题库难度&#xff1a;简单时/空限制&#xff1a;1s / 64MB总通过数&#xff1a;5184总尝试数&#xff1a;8091来源&#xff1a;《算法竞赛进阶指南》NOIP2010提高组算法标签DP线性DP 题目内容 小明过生日的时候&#xff0c;爸爸送给他一副乌龟…

堆 和 优先级队列

目录 一、堆 二、优先级队列 1、初识优先级队列 2、实现一个优先级队列 3、PriorityQueue &#xff08;1&#xff09;实现了Comparable接口&#xff0c;重写了compareTo方法 &#xff08;2&#xff09;实现了Comparator接口&#xff0c;重写了compare方法 4、 Prio…

AWD靶机实战第二天:使用python脚本获取flag

上一部分我们通过读源码和利用源码审计的工具找到了这个漏洞&#xff0c;但是在比赛的时候有很多靶机&#xff0c;我们去一个个的注册&#xff0c;一个个的登录然后输入很浪费时间&#xff0c;所以我选择写一个python脚本来实现自动获得flag以及自动提交flag. 首先我们将这次的…

心跳机制原理学习

心跳机制 应用场景&#xff1a; 在长连接下&#xff0c;有可能很长一段时间都没有数据往来。理论上说&#xff0c;这个连接是一直保持连接的&#xff0c;但是实际情况中&#xff0c;如果中间节点出现什么故障是难以知道的。更要命的是&#xff0c;有的节点&#xff08;防火墙…

Vue - 4( 8000 字 Vue 入门级教程)

一&#xff1a; Vue 初阶 1.1 关于不同版本的 Vue Vue.js 有不同版本&#xff0c;如 vue.js 与 vue.runtime.xxx.js&#xff0c;这些版本主要针对不同的使用场景和需求进行了优化&#xff0c;区别主要体现在以下几个方面&#xff1a; 完整版 vs 运行时版&#xff1a; vue.js&…

Java RESTful API开发:搭建基于Spring Boot的轻量级API服务

引言&#xff1a; 在当今互联网时代&#xff0c;API&#xff08;Application Programming Interface&#xff09;已经成为了各种软件系统之间交互的重要方式。而REST&#xff08;Representational State Transfer&#xff09;则是一种设计风格&#xff0c;用于构建分布式系统中…

c++作业day4

头文件&#xff1a; #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimer> #include <QTime> #include <QTextToSpeech> #include <QMessageBox> QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass…