96SEO 2026-02-19 23:55 7
。

如果对其不了解#xff0c;在使用计算机的过程中便可能发生一些意想不到的错误。
今天本文就来简明地介绍计算机里面的数值方面的一些知识#xff0c;并用具体例子来说明可能出现…计算机里面关于数值的处理自有一套体系理论与现实生活中我们所习惯使用的不太一样。
如果对其不了解在使用计算机的过程中便可能发生一些意想不到的错误。
今天本文就来简明地介绍计算机里面的数值方面的一些知识并用具体例子来说明可能出现的一些问题。
真值机器数想要表示的实际数值可理解为现实生活中我们平常所用的有正负号的数。
位符号位和数值部分组成。
表示一个正数时同原码表示一个负数时符号位不变数值部分各位求反。
位符号位和数值部分组成。
表示一个整数时同原码表示一个负数时符号位不变数值部分各位求反末位加
原码到补码快速转换(负数)符号位不变从右到左的第一个1不变其他位取反。
补码到原码(负数)转换方法同上符号位不变数值部分各位求反末位加
一个数的补码取负连同符号位各位求反末位加1即从右到左的第一个1不变其他位取反。
0有唯一表示00…000所以补码能表示的数范围比原码反码多1表示范围为
移码主要用于浮点数的阶码部分后面会讲浮点数的阶有正负两个浮点数比较时需要比较阶码来対阶。
为方便比较将阶加上一个偏置常数使其变成正数因为加的都是同一个偏置常数阶的差值也是不会改变的。
所以移码就是数值本身加上一个偏置常数得到偏置常数一般是2n-1或者2n-1-1。
上述都是定点数的表示方法定点数顾名思义小数点是约定不动在一个固定位置的。
定点数分为定点小数和定点整数。
而浮点数的表示类似于科学计数法它的指数部分可以变动相应的尾数部分也跟着变化就像小数点在浮动一样所以叫做浮点数浮点数后面再详解。
整数分为无符号整数和有符号整数**给定一个数在计算机里如何存储表示成
序列如何解释是上层软件的事情。
**如c语言中可解释为有符号数和无符号数而java中只解释为有符号数。
数值比较时得确定类型才能比较。
通常默认为有符号数相比若出现无符号数则按照无符号数相比。
第二个0U为无符号数所以两数按照无符号数相比-1的机器数为11…111按照无符号数解释为232
注括号前的二进制表示为数值的机器数通常由补码表示括号里面的是c语言对机器数
判断一个常量类型时是先将符号“踢开”只看后面的数值在哪个区间根据区间确定类型。
型前者带有U表示无符号数按照无符号数相比01…111B(231
型但被强制类型转换为int型所以按照有符号数相比01…111B(2^31
完全理解上述几个例子后对数值比较这一块应该没问题了在此再强调总结一番。
的机器数始终是10…000B2147483647的机器数始终是01…111B之所以出现不同的比较结果是因为
由上也可以看出机器数为10…000的数是能表示的最小整数取负后溢出还是它本身。
0但实际上并非如此。
这个程序理论上会无限循环实际运行时会发生数组越界导致异常。
str2谁长用到了库函数strlen()其原型如上。
此函数设想
问题就出在函数strlen()的返回值是size_t即unsigned
int。
也就是说比较是按照无符号数来比较的无符号数永远是大于等于
strlen(str2)直接让两个串的长度比较而不是做减法再与0比较。
这个例子说明调用库函数也要小心对其的返回类型参数类型要有了解否则可能就会出错。
负数的表示只不过是符号位发生变化所以32位单精度浮点数能表示的极值如下
区间内能表示的数的个数都是223个(尾数23位)而且等距。
比如
也就是说并不是每个小数都能精确表示当输入一个不可表示的数时机器会将其转换为最近能表示的数。
这也是为什么编写程序时不要用浮点数来进行比较特别是相等的情况因为你想比较的数可能无法表示机器自动给你转换了。
2-126之间的数是表示不了的引进非规格化数可解决这问题。
非规格化数的尾数中的隐含位为0阶码虽然全0但阶还是-126。
如此便在-2-126~2-126之间添加了2
精度大的转换成精度小的可能会出问题精度小的转换成精度大的不会有问题。
浮点数取负直接变符号位就可。
最后一个是浮点数的加减运算问题后面详解在这可以举个例子简单理解下当
逻辑移位不考虑符号位左移时高位移出低位补0右移时低位移出高位补0
算术移位考虑符号位左移时高位移出低位补0右移时低位移出高位补符号位
位截断长数向短数转化时会发生截断规则比较粗暴简单直接“砍掉”高位留下低位即可。
长数的表示范围肯定大于短数所以截断一个数可能会改变原来的值。
看下面一个例子
计算机里整数浮点数的加减乘除运算的实际过程都很复杂内容很多建议直接看唐朔风的计算机组成原理第六章数字逻辑相关书籍中加法器乘法器等的电路实现。
深入理解计算机系统对各种数值算法的理论推导。
公众号内回复电子书即可获得相应书籍。
下面就只说说其中我认为比较重要需要的一些东西。
现代计算机里面整数都可以看做是用补码表示的统一了加减法符号位也能和数值部分一起进行计算。
不论是无符号数还是有符号数都先按照实际的机器数做运算得到的结果再解释成相应的无符号数或有符号数。
整个计算机的运算系统都是采用模运算得出的结果如果超出计算机表示的位数会直接丢掉高位。
位来实现(来自深入理解计算机系统)但经过试验结果似乎会自动扩展。
整数除法一般没有溢出问题因为商的绝对值不会大于被除数的绝对值。
里面一些有趣的东西可以算是bug吧。
上述说的有符号数中的最小数即机器数为10…000的数(设为s)取负后还是它本身这是没问题的机器数也的确是相同的。
所以按理说
乘除法运算所花的时间远远多于移位加减运算的时间因此编译器处理变量与常量乘除时会以移位加法减法的组合运算来代替乘除法。
**左移需要注意高位的溢出问题而右移则需要注意舍入问题。
一般的舍入规则是向0舍入但用移位来实现除法是向下舍入的。
**对于正数来说没什么问题向下舍入就是向0舍入。
但是负数就有问题了向下舍入并不是向0舍入需要校正。
为什么移位来实现除法是向下舍入的呢正数应该很好理解右移之后丢掉移出的小数部分数值自然变小了。
如果是负数右移之后丢掉小数部分数值不应该变大吗但别忘了负数在计算机里由补码表示它跟真值对应的关系是要求反的所以换成真值后会发现数值依然是变小的。
既然负数也是向下舍入那么在它移位之前先给它加上一个偏移量让它变大点那么移位后舍入不就正确了。
这个数可以在十进制下来理解比如移动一位也就是一位小数的情况下-2.1-2.9都要舍入到-2应该怎么操作呢将两个数都加上一个0.9就行了这里0.9就是十进制一位情况下的一个极限小数换成二进制同理二进制
也要一起参与移位为保证精度低位移出的位不要丢掉后续参与尾数加减。
尾数是由定点原码小数表示这里没有符号位所以加减就是普通的二进制加减法。
这里注意隐含位和対阶时移出的附加位也要参与运算。
**B的形式然后相应的调整阶码。
小数点的位置与阶码息息相关小数点浮动了阶码当然也要相应变化。
対阶和尾数规格化的时都可能右移为保证精度会将移出的位保留下来参与中间运算得出最终结果后再舍入。
IEEE
位紧跟在尾数右边的叫做保护位(guard)保护位右边的叫做舍入位(round)为提高精度舍入位右边还有一位粘位(sticky)。
只要粘位右边有任何的非0数就置1否则置0。
看齐d尾数可能一直右移导致有效位没有了变成了全0再进行尾数加减时
浮点数乘法运算过程类似加减法主要区别在于乘除法不用対阶其他过程基本一样。
也好理解就像我们平时用科学计数法做算数时加减法那肯定是需要指数相等尾数才能相加减而乘除法时可以直接尾数与尾数运算指数与指数运算一个道理。
计算机里面有关数值的问题有很多不仅计算机本身有一套规则各语言的编译器也有自己的规则里面的弯弯绕绕很多会造成各种奇奇怪怪的问题。
本文也只是捡重点做简要介绍系统的理解还是去看书吧这里推荐深入理解计算机系统里面数值的基础理论很系统唐朔风的计算机组成原理对运算这一块而讲的比较详细袁春风老师的计算机系统基础也很经典比较薄容易读下去。
本文很多地方的例子就是采用她书上或者PPT中的例子。
然后再看看数字逻辑的相关书籍了解了解加法器乘法器等的电路实现来加深理解。
喜欢本文的朋友还请点个赞支持一下关注公众号Rand_cs可获取更多关于系统的精品文章还有关于计算机的各类电子书总能找到你需要的赶快关注吧
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback