计算机中数的表示

本文介绍了计算机中数的表示,包括布尔代数的补充知识,如异或和与非、或非运算。重点讲解了2's Complement表示法,强调了其在正负数加法中的规则和溢出判断。同时,探讨了有符号数和无符号数在加法运算中的差异,并提到了浮点数计算中可能出现的精度损失问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

布尔代数补充

异或(XOR,eXclusive OR)运算的真值表如下:

ABA XOR B
000
011
101
110

用一句话概括就是:两个操作数相同则结果为0,两个操作数不同则结果为1。

与非(NAND)和或非(NOR)运算就是在与、或运算的基础上取反:

ABA NAND B
001
011
101
110
ABA NOR B
001
010
100
110

二代补码(2’s Complement)

2’s Complement表示法规定:正数不变,负数先取反码再加1。

2’s Complement表示法的计算规则有些不同:减法转换成加法,忽略计算结果最高位的进位,不必加回到最低位上去。

要验证这条规则得考虑四种情况:

  • 两个正数,相加得正

  • 一正一负,相加得正

  • 一正一负,相加得负

  • 两个负数,相加得负

如何判断产生了溢出呢?我们还是分四种情况讨论:如果两个正数相加溢出,结果一定是负数;如果两个负数相加溢出,结果一定是正数;一正一负相加,无论结果是正是负都不可能溢出。

有符号数和无符号数

其实计算机做加法时并不区分操作数是有符号数还是无符号数,计算过程都一样,比如上面的例子也可以看作无符号数的加法:

1000 0010 +1111 1000 = ?

如果把这两个操作数看作有符号数-126和-8相加,计算结果是错的,因为产生了溢出;但如果看作无符号数130和248相加,计算结果是122进1,也就是122+256,这个结果是对的。

浮点数

具体计算内容见十四章第四节。

由于浮点数表示的精度有限,做浮点运算时要注意精度损失(Significance Loss)问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值