【学习打卡】第5天 物联网/嵌入式工程师学习笔记5
课程信息
- 课程名称:物联网/嵌入式工程师
- 章节名和曾:第1周之数据的存储
- 讲师姓名:大白老师
课程内容概述
计算机是0和1的世界,在计算机中,用原码、反码、补码来表示数据。
在内存中的数据使用补码来存储。
1. 存储规则
数据就在内存中总是以二进制补码的形式存放
一般来讲,最高位为符号位。正数为0,负数为1
2. 转换规则
2.1 原码 --> 反码、补码
- 正数的原码、反码、补码就是它本身
- 负数的反码 :符号位不变,对原码其它位依次取反
- 负数的补码 :符号位不变,反码 + 1
2.2 补码 --> 原码
- 方法1: 原码 = 补码 - 1 ,然后符号位不变,按位取反
- 方法2: 对补码再求补码可得原码。
3. 存储规则的深入理解
原码 + 原码的反码 =0xff
补码 = 原码的反码 + 1
补码 = (0xff - 原码) + 1
学习心得
上一节我们知道了计算机是0,1的世界,但是在内存中0和1是如何存储的呢?
直接使用我们熟悉的原码去存储不可以吗,或者说又引入反码、补码的意义何在呢?
原码、反码和补码的出现都是为了解决计算机对整数的编码问题。
原码无疑是最便于人类理解和计算的编码方式,但是对于计算机,原码有加减乘除四种运算方式,更要考虑符号位而实行不同的计算策略,显然会让cpu的设计无比复杂。
人们想到了用加法来代替其他的三种运算方式(详见讲清原码、反码和补码的来龙去脉)