猫史档案馆


整数的表示(c++教学)

用户:SCS_user_EHQ0z2l6elSCS_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 

 


回复

上一页1 页 / 共 1下一页
SCS_user_EHQ0z2l6elSCS_user_EHQ0z2l6el

上期回顾:https://shequ.codemao.cn/community/537721

记得多评论哦~

点赞0


评论


SCS_user_EHQ0z2l6elSCS_user_EHQ0z2l6el

这种教学类的一般就不顶了吧,感兴趣可以直接搜“c++教学”就能搜到

点赞0


评论


SCS_user_EHQ0z2l6elSCS_user_EHQ0z2l6el

捞)

点赞0


评论