用户:
SCS_user_EHQ0z2l6el查看:1 回复:3 评论:1 创建时间:2023-04-27T21:08:50
这回直接开讲,首先列个清单
主要内容
1、无符号数的表示
2、有符号数—数的真值表示
3、有符号数—数的原码表示
4、有符号数—数的反码表示
5、有符号数—数的补码表示
无符号数的表示
数字在自然界中抽象出来的时候,一棵树,两只猪,是没有正数和负数的概念的
计算机保存最原始的数字,也是不分正负的数字,叫无符号数字
如果我们在内存分配4位(bits)去存放无符号数字,是下面这样子的
十进制 二进制
0 0000
1 0001
2 0010
3 0011
等等
有符号数—数的真值表示
有一天,张三欠了李四5块钱
为了表示欠别人东西这个概念
我们就从无符号数中
划分出了“正数”和“负数”的概念
从而可以说,张三的资产是 -5 元
而李四的资产有 +5 元
从而我们可以用真值来表示正负数
+5=+101
-5=-101
有符号数—数的原码表示
为了表示正与负,早期的计算机设计人员发明了“原码”
把生活应该有的正负概念,原原本本的在计算机中表示出来
原码用最左边的一位来表示数字的符号
比如
-5(原)=1101
+5(原)=0101
但使用“原码”存储的方式,存在着两个问题
第一个问题
当我们需要两个二进制数相加的时候,比如说 +1 和 -1 相加:
+1(原)+ -1(原)=0001+1001=1010=-2
原码的 +1 和 -1 相加,得到的是 -2
第二个问题
0居然有两个原码
+0=0000 -0=1000(不是数学里的)
有符号数—数的反码表示
为了解决原码的第一个问题,相反数相加不为0的问题,人们在计算机设计的时候
提出了“反码”表示法
“反码”表示方式是用来处理负数的,符号位置不变,
其余位置和原码相反,正数的反码和原码一样
+5(反)=0101
-5(反)=1010
这时+5(反)+ -5(反)=0101+1010=1111=0(反)
但是这时0还是有
0000和1111两种不同的表示
有符号数—数的补码表示
设计计算机的人希望精益求精,只有一种表示 0 的方式,
所以发明了 “补码”,同样是针对“负数” 做处理的
“补码” 的意思是,在“反码”的基础上,补加上1
+5(补)=0101
-5(补)=1010+1=1011
另外“相反数相加等于0"的问题,同样得到满足举例,
3和(-3)相加,0011 + 1101 =10000,
去掉进位的1,就是 0000
注意:对正数,三种表示法均相同。 它们的差别在于对负数的表示。
要对比可以翻翻之前的几章
那么今天的教学到这里就结束了
下次我可能会讲有符号数和无符号数之间的转换
再见awa