【转】代码之谜(一) - 有限与无限 (从整数的绝对值说起)

数据结构概述题库 网络课课后题 1、关于算法特性描述正确的有: A、算法保证计算结果的正确性 B、组成算法的指令可以有限也可能无限 C、算法描述中下一步执行的步骤不确定 D、算法的有穷性指算法必须在有限步骤内结束 解析 算法保证计算结果的正确性。 指令必须有限 算法具有确定性 算法不能含有死循环,必须在有限步骤内结束 2、以下哪种结构是逻辑结构,而与存储和运算无关: A、队列(q... 阅读详情
一、引子

开始本章之前我先提个问题:“如果一个整数的绝对值等于它自己,那么这个数是几?”如果你回答是 0 和 所有正数,那么请你耐心读完这篇文章吧。

本章是我『代码之谜』系列的第二篇,前一篇『代码之谜 - 开篇/前言/序』简单介绍了计算机与数学的不同。

数学中有许多复杂深刻的矛盾,数学家的工作就是解释或者反驳这些矛盾, 例如有限与无限、连续与离散、存在与构造、逻辑与直观、具体与抽象、概念与计算等等。

在本章中,我们把目标缩小,主要讨论内容

  • 概念: 有限与无限
  • 对象: 8bit整数

二、绝对值之谜

终于到主题了,也许你很想知道“负数的绝对值可能等于自己吗?”,也就是 “如果x等于-x,那么x有几个解?”按照我一贯的作风,我是不会轻易告诉你答案的。 《编程珠玑》记载,作者告诉了他同事一个结果,而不是方法,最后追悔莫及。 所以,我在这里要告诉你方法,而不是告诉你答案。

告诉你答案之前,首先得回答个问题:“整数(8bit)的表示范围是多少?”,(也许你已经把教科书的知识背下来了,是 -2^7 到 2^7-1,也就是 -128 到 +127,现在的计算机科学都快成为文科了^_^)。

如果你不知道也没关系,至少你知道 8bit 可以表示的整数个数是 2^8 个,这个数等于多少无所谓,但是,它一定是个偶数(256)。

那么这里就有一个很有意思的问题了,0既不是正数也不是负数,把0去掉的话,整数的个数就是奇数了,整数还剩 255 个。 奇数个整数不可能平均分成两部分(正数和负数),要么负数多一个,要么正数多一个。事实就是,负数比正数多一个,最小的负数是 -128, 最大的整数是 127。

现在的问题是, -128 的绝对值是多少呢? -(-128)等于多少呢?是溢出呢,还是等于它自己呢?也许计算机课本没有告诉你, 整数是不会出现溢出异常的,整数的溢出被认为是正常的舍弃(其实只要很合理)。整数只有被0除才会异常,而浮点数,即使被0除也不会抛出异常。 浮点数除0的操作将放在本系列浮点数篇讨论。

绝对值等于自己的数有两个,0 和最小的负数。

你可能要像香港电影里女主角那样歇斯底里的大喊“绝对值怎么可能是负数呢? 不可能,我不信,我不信…”

忘掉你那可怜的数学知识吧,“发生这种事,大家都不想的。感情的事呢,是不能强求的。所谓吉人自有天相,做人呢,最要紧的就是开心…”跑题了,赶紧回来。

在经典数学(非皮亚诺算术系统,皮亚诺绝对是欧几里德的铁杆粉丝,要不怎么会有如此天才的构想,这个以后会给大家普及)中,绝对值定义为:“从原点到点A的距离,称为A的绝对值,它是一个非负数”。 既然讲到了距离,不妨剧透一下(本系列“逻辑篇”会涉及到),两个数的大小在数学中如何定义,“距离数轴原点的距离远近”,计算机中大小如何定义的呢?给大家留个作业吧(别告诉我是设计编程语言或者设计电脑的科学家规定的,计算机科学绝对不是文科)。

计算机中没有数轴,绝对值是如何定义的呢?看看java、C、Python的源码(感谢那些开源大牛),和咱们学的小学数学一样。

abs(x) :=  (x >= 0) ? x : -x

翻译过来就是,x的绝对值定义为:正数和0的绝对值等于它自己,负数的绝对值等于-x。(这里使用的是-x,而没有用0-x,因为在浮点数中,这两者是有区别的。)

三、深入 -x

那么 -x 是如何计算的呢? 计算是数学概念,在计算机中,我们应该说 -x是如何求值的呢?还得回到源码,我只看了linux中关于C的源码,如果你看过其它语言源码发现和我说的不同,请联系我。 学过计算机原理的都知道,负数在计算机中以补码形式存储,计算补码的方式和取反操作类似。

符号位不变,其它位取反,最后加一。

比如 -5

原码:       1000,0101
其它位取反:  1111,1010
加一:       1111,1011

当我们求它的绝对值时如何操作呢

补码:     1111,1011      这是-5在计算机中的表示
各位取反:  0000,0100
加一:     0000,0101      此时结果为+5

现在我们回到最小的负数问题,最小的负数在计算机中表示为 1000,000,下面我们对这个数操作

补码:     1000,0000
各位取反:  0111,1111
加一:     1000,0000

神奇吗,尼玛,居然又回到自己了。

 

转自:http://blog.youkuaiyun.com/justjavac/article/details/8073667

数据结构试题库集及答案 预览地址:http://www.mayiwenku.com/p-5747909.html; 立即下载

相关推荐

WPS集成DeepSeek最新教程,附详细图文,让文案生成更智能

本文将为大家详细介绍如何将 DeepSeek 功能集成到 WPS 中,通过 OfficeAI 插件,你无需进行复杂的本地部署,只需通过官网连接即可快速启用 DeepSeek 强大的 AI 功能。不论是文案生成、翻译校对,还是深度推理、决策支持,DeepSeek 都能为你提供便捷的解决方案。让我们一起来看看如何操作吧!

Java徐师兄的博客 6万+

02-Node.js基础(一)

Node.js 基础

m0_48670609的博客 832

再生龙(clonezilla)镜像比目标盘大——基于centos8.5

再生龙恢复到小盘遇到的问题及处理,首先是修改分区大小,进入dracut模式后再尝试恢复临时系统。

u010101453的博客 3686

nodejs的简单复习

判断一个字符串在不在某个字符串里面let index1 = str.indexOf('宇宙')//0截取字符串// 江西修改字符串let str3 = str.replace("宇宙","互联网")// 互联网的中心——江西软件职业技术大学分割字符串大小写转换//abcdefg//ABCDEFG。

PCthedream的博客 755

FCKeditor 2.6.4 php版本任意文件上传——漏洞复现

一、漏洞描述 FCKeditor是目前最优秀的可见即可得网页编辑器之一,它采用JavaScript编写。具备功能强大、配置容易、跨浏览器、支持多种编程语言、开源等特点。它非常流行,互联网上很容易找到相关技术文档,国内许多Web项目和大型网站均采用了FCKeditor。 Fckeditor 低于 2.6.4 php 版本任意文件上传漏洞,当您的PHP环境配置为 GPC = Off 时可绕过currentfolder参数过滤上传脚本木马控制网站服务器 二、漏洞原理 漏洞版本:<=2.6.4 三、环境搭建

W小哥 1万+

Replay音频转换时samplerate缺失的解决方案指南

Replay音频转换时提示"No module named 'samplerate' This error is lazily reported, having originally occured in File"的解决方案

weixin_47445543的博客 2128

数据结构与算法 Data Structures and Algorithms(作业1)

Question 1 下列不属于线性结构的是: 串 队列 栈 二叉树 Question 2 以下哪种结构是逻辑结构,而与存储和运算无关: 单链表 散列表 线性表 顺序表 Question 3 计算运行下列程序段后m的值: n = 10; m = 0; for (i =1; i     for (j = 2*i; j

理想主义不死 2796

里海NX二次开发3000例-专栏目录

UDO(User Defined Object)是“用户自定义对象”。应用非常广,可以用UDO创建自定义特征,也可以对NX原有的特征添加一些特殊信息,这些信息会保存在部件中,以后可以查询。还可以实时追踪NX对象,例如做3D包容盒线框自动追踪实体,做2D矩形框自动追踪图纸尺寸值,这些在下面的例子都有介绍。读者可以自己编译下面的例子,体会理解UDO的用法。------里海 20230512序号内容​链接01使用UDO在所有实体上设置更新回调​链接02使用UDO生成跟踪实体的线框​链接03删除UDO​链接。

王牌飞行员_里海的博客 7712

代码之谜(零) - 其实,你不懂代码

2012年9月28日 13时32分 新增 最近看本文评论,争议很多,我先说说这篇文章的前世今生吧。 我原文标题是『代码之谜 - 开篇/前言/序』,副标题是『其实,你不懂代码』,本来打算用“其实,代码中的运算符不等价于数学符号”。原文我写于2010年底,当时写在 evernote 中,用了”群“、”域“、”集合“、”关系“的概念解释了计算机中用二进制表示的离散的数和现实中连续的数之间...

iteye_6378的博客 312

为什么 ChatGPT 生成的下载地址会长成 sky-metal-cards-jerry.quirkypony34.chatgpt.site 这种奇怪的样子

我今天看到的这条地址,确实很容易让人产生一种感觉,ChatGPT 明明只是生成了几张 PNG 图片和一个压缩包,为什么最终拿到的却不是类似这种看起来很正规的下载链接,而是一长串带有、UUID、apidecks的地址。更容易让人疑惑的是,其中还出现了一个平时很少见到的域名。这并不是浏览器随机生成的临时 URL,也不是某个来历不明的第三方文件服务器。根据 OpenAI 在 2026 年公布的 ChatGPT Sites 文档和相关服务条款,

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 58

2026基金本子新规必看!聚焦四大底层问题,利用AI辅助分别破解提升中标率

我拟申报的研究主题为【明确的研究主题或关键词组合】。选题方向也是评审专家关注的核心之一,申报前可以检索近五年领域前人中标项目,分析现有研究的空白与不足,并结合自身研究基础选择 “人无我有、人有我优” 的细分方向,如果是交叉学科选题,则要阐述不同学科的融合逻辑与创新点。“推动国家战略”、“带来行业发展”等宏观表述,有很多同仁都喜欢用这类话术开篇,但实际上宏大叙事无法替代具体的真实科学问题,明确不了研究要解决的核心痛点,更没有说明问题的现实针对性,评审看了往往抓不到研究的核心价值。

智能AI让学术科研更容易 294

代码之谜(一) - 有限与无限 (从整数的绝对值说起)

一、引子 开始本章之前我先提个问题:“如果一个整数的绝对值等于它自己,那么这个数是几?”如果你回答是 0 和 所有正数,那么请你耐心读完这篇文章吧。 本章是我『代码之谜』系列的第二篇,前一篇『代码之谜 - 开篇/前言/序』简单介绍了计算机与数学的不同。 数学中有许多复杂深刻的矛盾,数学家的工作就是解释或者反驳这些矛盾, 例如有限与无限、连续与离散、存在与构造、逻辑与直观、具体与抽

justjavac(迷渡) 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

代码之谜(一)- 有限与无限 从整数的绝对值说起

最近看了一个系列的文章,感觉很受启发,在此转载:http://justjavac.com/codepuzzle/2012/09/25/codepuzzle-introduction.html

zzhou910的专栏 671

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

代码之谜 - 有限与无限 (从整数的绝对值说起)(转)

一、引子 开始本章之前我先提个问题:“如果一个整数的绝对值等于它自己,那么这个数是几?”如果你回答是 0 和 所有正数,那么请你耐心读完这篇文章吧。 本章是我『代码之谜』系列的第二篇,前一篇『代码之谜 - 开篇/前言/序』简单介绍了计算机与数学的不同。 数学中有许多复杂深刻的矛盾,数学家的工作就是解释或者反驳这些矛盾, 例如有限与无限、连续与离散、存在与构造、逻辑与直观、具体与抽

住在半山腰的螃蟹专栏 513

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

有限与无限思想

一、有限与无限思想 \(\hspace{2em}\)有限与无限并不是一新东西,虽然我们开始学习的数学都是有限的教学,但其中也包含有无限的成分,只不过没有进行深入的研究。在学习有关数及其运算的过程中,对自然数、整数、有理数、实数、复数的学习都是有限个数的运算,但实际上各数集内元素的个数都是无限的。在解析几何中,还学习过抛物线的渐近线,已经开始有极限的思想体现在其中。数列的极限和函数的极限集中体现了有...

weixin_34356555的博客 2859

【转载】代码之谜(一)- 有限与无限(从整数的绝对值说起)

原博客链接:http://justjavac.iteye.com/blog/1698691 一、引子 开始本章之前我先提个问题:“如果一个整数的绝对值等于它自己,那么这个数是几?”如果你回答是 0 和 所有正数,那么请你耐心读完这篇文章吧。 本章是我『代码之谜』系列的第二篇,前一篇『代码之谜 - 开篇/前言/序』简单介绍了计算机与数学的不同。 数学中有许多复杂深刻的

菜鸟进阶中。。。 373

代码之谜(一)- 有限与无限(从整数的绝对值说起)

  一、引子 开始本章之前我先提个问题:“如果一个整数的绝对值等于它自己,那么这个数是几?”如果你回答是 0 和 所有正数,那么请你耐心读完这篇文章吧。 本章是我『代码之谜』系列的第二篇,前一篇『代码之谜 - 开篇/前言/序』简单介绍了计算机与数学的不同。 数学中有许多复杂深刻的矛盾,数学家的工作就是解释或者反驳这些矛盾, 例如有限与无限、连续与离散、存在与构造、逻辑与直观、具体与抽象...

justJavaC的专栏 214

代码之谜(一) - 有限与无限(从整数的绝对值说起)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34248023的博客 125

代码之谜(一)- 有限与无限

一、引子 开始本章之前我先提个问题:“如果一个整数的绝对值等于它自己,那么这个数是几?”如果你回答是 0 和 所有正数,那么请你耐心读完这篇文章吧。 本章是我『代码之谜』系列的第二篇,前一篇『代码之谜 - 开篇/前言/序』简单介绍了计算机与数学的不同。 数学中有许多复杂深刻的矛盾,数学家的工作就是解释或者反驳这些矛盾,例如有限与无限、连续与离散、存在与构造、逻辑与直观、具体与抽象、概念与计算

GarfieldEr007的专栏 1106

代码之谜(一)- 有限与无限(从整数的绝对值说起)

一、引子 开始本章之前我先提个问题:“如果一个整数的绝对值等于它自己,那么这个数是几?”如果你回答是 0 和 所有正数,那么请你耐心读完这篇文章吧。 本章是我『代码之谜』系列的第二篇,前一篇『代码之谜 - 开篇/前言/序』简单介绍了计算机与数学的不同。 数学中有许多复杂深刻的矛盾,数学家的工作就是解释或者反驳这些矛盾, 例如有限与无限、连续与离散、存在与构造、逻辑与直观、具体与抽象、概念与计...

weixin_30587025的博客 84

创世理论达成 给你们解释下宇宙的规则吧 我可是很懂的 无限与有限的绝对统一:基于“一即一切·一切即一”宇宙模型的推导 宇宙在高维是绝对有限的 在低维是无限的 就像棋盘和棋子的关系

通过动态零点的循环锚定(约束无限时间为有限态循环)、自相似性与全息性的结构统一(有限局域承载无限整体)、π绑定的代数约束(抑制无限发散并保证有限范数),以及“一即一切·一切即一”的终极命题(有限子系统蕴含无限整体,无限演化是有限态循环),理论成功实现了无限与有限的绝对统一。无限的时间、空间与量子态扩展被约束在有限的态空间中,有限的结构与子系统信息完整承载了无限的整体信息,二者在数学、物理与逻辑层面完全自洽,共同构成了宇宙的本质。宇宙的无限空间扩展(如24维宇宙的无限延展)与有限局域结构的承载,通过。

qq_36719620的博客 710

有限维欧几里得空间和无限维空间概念,与神经网络的联系

为什么神经网络是在有限维欧几里得空间中学习?什么是有限维空间,什么是无限维空间。为什么要神经网络学习无限维空间之间的映射?

wwd666666的博客 2907
上一篇: 【转】代码之谜(零) - 其实,你不懂代码
下一篇: 【转】代码之谜(二) - 语句与表达式
wfx
wfx
博客等级 码龄21年 2粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值