虫虫教学

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3156|回复: 32

关于溢出的一点内容,高手略过。

[复制链接]

7

主题

17

帖子

1491

积分

高级会员

Rank: 4

积分
1491
发表于 2022-10-4 15:00:55 | 显示全部楼层 |阅读模式
本帖最后由 虫虫♂神棍 于 2022-10-4 15:02 编辑

溢出是个很大的话题,这里说其中一点点,我尽量用小白能明白的语言和例子去说一下,可能举例或者比喻不是很恰当,但希望可以给虫虫里的一些好学的朋友一点感触,说不定这一点思路可以提高一些朋友的技术,高手请略过,献丑了!
注:内容是一些底层逻辑,并不涉及结果的呈现。
关于“溢出”,在机器码的语言逻辑中,其实有两种说法,一种叫“进位”,另一种才叫“溢出”。
什么叫“进位”:无符号的溢出,叫做“进位”。
什么叫“溢出”:有符号的溢出,叫做“溢出”。
接着问题要来了,什么是有符号,什么是无符号。
棍哥说:
1、2、3、4、5、6、7、8、9、0这是无符号
-1、-2、-3、-4、-5、-6、-7、-8、-9这是有符号
+1、+2、+3、+4、+5、+6、+7、+8、+9这也是有符号
机器码的表达(8位):00000001(这就是无符号的1)、00000010(这就是无符号的2)想要深入了解的可自行百度,这里不过多涉及。
由此可知,底层逻辑里都是机器语言,也就是0和1来代表一切,也就是用机器码加上各种逻辑语言和运算去表达我们所看到的结果,无论机器码代表什么,只要叠加在之上的运算结果超出范围或者说运行逻辑产生了无阻碍(有阻碍就是类似验证或者纠错、预警机制)的变化,就”溢出“了。

·无符号溢出相对比较好理解,就可以按字面理解就好,就是0--临界值,都是非负数两个非负数A、B相加会发生溢出问题,都会涉及运算,比如某些程序的函数运算,判断通过sum和A或B进行比较大小(sum=A+B)如果sum≥A或B,那么没有发生溢出,否则发生了溢出。而且,无符号数的运算,肯定不会溢出,只有进位。
·有符号的溢出,这个也简单嘛。两个正数相加为负数,两个负数相加为正数,那么就发生了溢出。因为正常逻辑1+1肯定不会等于-2。
1.都是同负的时候,符号位一定有进位(此时最高位等于0,不计尾数进位),不管尾数进位是多少,在此情况下,尾数进位将作为最后的结果进位,如果其尾数进位是1,则结果仍为负数,不溢出,反之就会溢出。
2.都是同正的时候,两个0相加,没有溢出,即使有尾数进位,符号位也不会有进位,所以此时尾数进位仍然作为结果的符号位,如果尾数进位为0,结果符号位为0,不溢出,反之就会溢出。
所以,是不是可以理解为什么在常用的溢出计算7F和8F公式里,会用+1或-1来进行溢出运算,虽然实际运行不一定是这样,但是可以这样理解。
溢出方法千千万,总的来说应该逃不出底层的运算和运行逻辑在某一个节点的无阻碍变化,要么合理溢出,要么合理崩溃,要么合理被阻碍。


本来想设置1金币的,但是写完又看了一遍,感觉说了跟没说一样,各位就当消遣时看看吧,真是头大。溜了溜了~



85

主题

1083

帖子

1万

积分

论坛元老

Rank: 8Rank: 8

积分
15727
发表于 2022-10-4 15:18:54 | 显示全部楼层
先回后看
回复

使用道具 举报

114

主题

1116

帖子

6385

积分

钻石会员

Rank: 7Rank: 7Rank: 7

积分
6385
发表于 2022-10-4 15:22:53 | 显示全部楼层
感谢大佬分享,虽然没看懂
回复

使用道具 举报

2

主题

25

帖子

778

积分

中级会员

Rank: 3Rank: 3

积分
778
发表于 2022-10-19 14:31:08 来自手机 | 显示全部楼层
感谢大佬分享,虽然没看懂
回复

使用道具 举报

83

主题

136

帖子

6857

积分

钻石会员

Rank: 7Rank: 7Rank: 7

积分
6857
发表于 2022-11-10 08:17:06 | 显示全部楼层
yjcclm.com  不迷路
回复

使用道具 举报

0

主题

2

帖子

54

积分

新手上路

Rank: 1

积分
54
发表于 2023-1-31 11:06:44 来自手机 | 显示全部楼层
谢谢分享,小白懵逼
回复

使用道具 举报

9

主题

82

帖子

5292

积分

钻石会员

Rank: 7Rank: 7Rank: 7

积分
5292
发表于 2023-2-24 19:11:36 | 显示全部楼层

先回后看
回复

使用道具 举报

6

主题

540

帖子

5712

积分

钻石会员

Rank: 7Rank: 7Rank: 7

积分
5712
发表于 2023-2-24 19:18:58 | 显示全部楼层
雪碧
回复

使用道具 举报

19

主题

79

帖子

5937

积分

钻石会员

Rank: 7Rank: 7Rank: 7

积分
5937
发表于 2023-4-1 16:48:54 来自手机 | 显示全部楼层
66666666
回复

使用道具 举报

18

主题

327

帖子

1万

积分

论坛元老

Rank: 8Rank: 8

积分
14052
发表于 2023-4-3 23:17:16 来自手机 | 显示全部楼层
1111
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

QQ|Archiver|手机版|小黑屋|虫虫教学--虫虫联盟官网

GMT+8, 2025-6-14 09:02 , Processed in 0.643371 second(s), 42 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表