- 课程名称:嵌入式工程师
- 学习章节:原码、反码、补码的储存
- 学习链接:https://class.imooc.com/sc/148/learn
- 讲师姓名:大白老师
课程内容:
数据储存
简介
在计算机中,用我们的原码、反码、补码来表示数据。在内存中的数据使用补码来存储。
储存规则
A. 数据就在内存中总是以二进制补码的形式存放 。最高位为符号位。正数为0,负数为1 (不完全)
B. 正数的原码、反码、补码就是它本身。原码该数转换位二进制的形式
C. 负数
负数的二进制原码就是正数的二进制,不过符号位变成1了
反码 :符号位不变,对原码其它位依次取反。0变1,1变0
补码 :符号位不变,反码 + 1
注意事项
8bit举例
+10 原码: 0000 1010 8+2
反码: 0000 1010
补码: 0000 1010 在内存中以补码存储
-10 原码: 1000 1010
反码: 1111 0101
补码: 1111 0110 在内存中以补码存储
补码转原码
方法1
原码 = 补码 - 1 ,然后符号位不变,按位取反
示例
-10 补码:1111 0110
-1 :1111 0101
取反:1000 1010
方法2
对补码再求补码可得原码。【推荐】
示例
-10 补码:1111 0110
取反:1000 1001
+1: 1000 1010
数据储存的理解
理解方法
不考虑符号位,原码 + 反码 = 0xff
1111 0110
1000 1001
1111 1111====>0xff
推导步骤
原码 + 原码的反码 =0xff, 而 补码 = 原码的反码 + 1 ,得出 补码 = (0xff - 原码) + 1
根据以上等式可用推导出
*原码的反码 <====>0xff -原码
*补码的反码<====>0xff -补码
同理,改变公式。
原码 = (0xff - 补码) + 1
*可得 : 0xff - 补码 <====>补码的反码
原码 = 补码的反码 + 1===>对补码再求补码可得原码。
学习收获:
理解了数据在内存中的存在形式
收获了原码的反码和补码的转换
截图打卡: