当前位置:网站首页>整数溢出机制 C
整数溢出机制 C
2022-08-09 02:44:00 【康来个程】
前言
这是在写一道关于需要处理整数溢出的运算的题时学到的概念,一般对于long long都承载不了的数我们一般用大整数都能解决,但是对于只是判断整数是否溢出时了解整数溢出的机制有时候能够事半功倍。
一、无符号整型溢出
对于unsigned整型溢出,C标准在这一方面是有定义的:“溢出后的数会以2^(8*sizeof(type))作模运算”,如果一个unsigned char溢出了,需要把溢出的值与256求模。
二、有符号整型溢出
对于signed整型的溢出,C的规范定义是“undefined behavior”,虽然没有定义,各编译器可自己实现,大部分的溢出机制还是一样的。
有符号整型溢出可以分为向上溢出和向下溢出。假设用k个字节表示一个整型变量, 那么这个变量可以表示的有符号整数的范围是-2^(8k-1) ~ 2^(8k-1) – 1,两个正整数或者两个负整数相加就有可能超过这个整型变量所能表示的范围, 向上超出>2^(8k-1) – 1称之为向上溢出, 向下超出<-2^(8k-1) 我们称之为向下溢出。
先说对于所有溢出情况的结论,当溢出时(以signed char举例),我们会取结果的低八位,并对其表示的符号位判断该数字的正负。
对于两数之和是否溢出的判断,这时候我们就可以得出:两个正数相加后溢出结果将 <0,两个负数相加后溢出结果将>=0。
边栏推荐
猜你喜欢
随机推荐
微信公众号跳转小程序 wx-open-launch-weapp (最全指南及坑)
gpio子系统和pinctrl子系统(上)
Open3D 随机采样
Rotate the neon circle
SA-SSD环境搭建——血与泪的教训
快速乘写法
搭建Eureka注册中心集群 ,实现负载均衡
旋转霓虹圆圈
Cyclictest 简介 安装 测试
二分搜索法和二叉搜索树
自动化测试框架总结
How to play knowledge graph in recommender system
20220530设计问题:常数时间插入、删除和获取随机元素
20220525动态规划:跳跃游戏
uart_spi练习
2022年自然语言处理校招社招实习必备知识点盘点分享
终于有人把灰度发布架构设计讲明白了
opencv在图像上长按左键画矩形单击右键清除
使用TensorRT对AlphaPose模型进行加速
工具类:base64格式的数据与本地文件的相互转换