定点数和浮点数(七)

本文阐述了计算机中二进制的基础概念,强调了进位在不同进制之间的转换,指出高级语言中的抽象处理可能导致对进位理解的混淆,并澄清了无符号数、有符号数等概念在计算机原理中的实际意义。
摘要由CSDN通过智能技术生成

现在,大家都知道,计算机使用的是:二进制。

我们平时用的十进制、计算机用的二进制,这两者,并没有本质的区别。

一个数值 N,可以用不同的进制(十进制、二进制、十六进制...)来表示。

不论使用什么进制,N,都是同样的数值。

二进制的特点,也不过就是【逢二进一】,仅此而已,不必大惊小怪。

计算机中的数值 N,其实,也就是一个数值而已。

千万不要以为,是个二进制数,就会有一个 “符号位”。

哪有什么 “原码反码补码、取反加一、模、浮点数 ...” 啊!

这些,和计算机原理,并无半点关系!

------------------------------

在计算机中,字长,是固定的。

八位机,每次运算,就是八位二进制数。

如果在计算时,向第九位出现了 “进位”,计算机就会另外存放。

这个进位,编程人可以保留,也可以放弃。

下图,是两个八位二进制数相加的竖式:

图中,也列出了同一个数值的十进制算法。

这两个二进制数,分别是:0111 0101 = 117 (十进制)、1101 0111 = 215 (十进制)。

它们的和,用十进制来表示,很显然,就是:332

相加过程中,出现的进位,用 “棕色” 做了标记。

二进制的第九位的 1,用十进制数表示,就是:256。

如果,你在编程的时候,抛弃了进位,这次计算,就是 117-41 = 76。

此时的 215,就不是 215 了! 它就代表-41 了!

它就是计算机专家所说的:【-41 的补码】!

实际上,计算机仅做了一次加法运算。

 用的数值,也是同一个值,即:1101 0111 = 215 (十进制)。

但是,怎么会有两者解释呢?

这个值,它到底是 215,还是-41 呢?

 这就要看,你编程时,是怎么处理 “进位” 的。

呵呵,这说法,学软件的同学,就很可能觉得难以理解了。

进位是什么? 小学的算术课,大家都学过的。

但是,用高级语言编程时,就看不见 “进位” 了。

所谓的高级语言,既不是计算机语言,也不是人类的语言。

只是由一些小学没有毕业的人,胡乱编造的语言。

就比如说吧:“回车、换行”,本来是 ASCII 码中的 “0D、0A”,

但是,在 C 语言中,偏偏要用 “\n” 来表示。

此类写法,还有许多。

本来很简单的事,用高级语言来解释,就麻烦透了。

一般来说,好好一个孩子,学完了高级语言,就迷迷噔噔了。

------------------------------ 

实际上,在计算机中,只有【二进制数】而已。

计算机,也只会对这些二进制数,进行加法运算。

所谓的 “无符号数、有符号数、符号位、原码反码补码”,都是不存在的。

所谓的 “浮点数”,也是一组二进制数,需要由软件进行深度处理,才能知道它代表的是什么。

------------------------------ 

计算机中的二进制数,可能是:

 正数、负数、整数、小数、浮点数、补码、ASCII 码、BCD 码、格雷码 ...,

也可能是:七段码、字形点阵码、颜色、声音、动画、命令、状态 ... ,

甚至是:各种密码,代表各种不可言传的信息 ... 。

它到底是什么东西?

 这就与计算机无关了!

 完全取决于 “编程人的思路”。

但是,编程思路,并不属于《计算机组成原理》。

学习《计算机原理》,只要学会了二进制数的运算方法,即可。

不必乱七八糟的瞎联系。
 

就比如,一台汽车,有不同的行驶状态:

 快、慢、漂移、单侧轮、爬台阶、翻滚、掉入陷坑 ... 、

这些,只与驾驶员的操作方法有关,和《汽车原理》并没有确定的关系。

------------------------------

计算机基本的算术运算是:加法。

计算机在做运算时,只是按照【逢二进一】的规则来做。

此时,并没有什么 “无符号数、有符号数、原码、补码、小数” 的说法。

也可以说,计算机,只使用【无符号整数相加的方法】。

--------------------

比较复杂的运算,是:乘法和除法。

计算机在做这两种运算时,就要反复的运用【相加的方法】。

也就是说,乘除运算,仍然是用【无符号数相加的方法】。

所谓的:

 原码的乘法、补码的乘法、

 原码的除法、补码的除法,

纯属无稽之谈。

------------------------------

《计算机组成原理》是一门以硬件为主的课程。

在硬件基础上,开机首先运行的是《操作系统》。

在系统软件运行起来之后,计算机才能运行各种 “应用软件”。

绝大多数的编程人,只有在这时候,才会用到 “浮点数”。

在介绍硬件的时候,为何要掺杂进去与硬件无关的 “浮点数” 呢?

不可理解。

本文完

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值