举例来说,+8在计算机中表示为二进制的1000,那么-8怎么表示呢?

很容易想到,可以将一个二进制位(bit)专门规定为符号位,它等于0时就表示正数,等于1时就表示负数。比如,在8位机中,规定每个字节的最高位为符号位。那么,+8就是00001000,而-8则是10001000。但是,随便找一本《计算机原理》,都会告诉你,实际上,计算机内部采用2的补码(Two's Complement)表示负数。

什么是2的补码?

它是一种数值的转换方法,要分二步完成:

第一步,每一个二进制位都取相反值,0变成1,1变成0。比如,00001000的相反值就是11110111。

第二步,将上一步得到的值加1。11110111就变成11111000。

所以,00001000的2的补码就是11111000。也就是说,-8在计算机(8位机)中就是用11111000表示。

不知道你怎么看,反正我觉得很奇怪,为什么要采用这么麻烦的方式表示负数,更直觉的方式难道不好吗?为什么要用2的补码?

首先,要明确一点。计算机内部用什么方式表示负数,其实是无所谓的。只要能够保持一一对应的关系,就可以用任意方式表示负数。所以,既然可以任意选择,那么理应选择一种最方便的方式。2的补码就是最方便的方式。它的便利体现在,所有的加法运算可以使用同一种电路完成。

还是以-8作为例子。假定有两种表示方法。一种是直觉表示法,即10001000;另一种是2的补码表示法,即11111000。请问哪一种表示法在加法运算中更方便?

随便写一个计算式,16 + (-8) = ?

16的二进制表示是 00010000,所以用直觉表示法,加法就要写成:

00010000

+10001000

---------

10011000

可 以看到,如果按照正常的加法规则,就会得到10011000的结果,转成十进制就是-24。显然,这是错误的答案。也就是说,在这种情况下,正常的加法规 则不适用于正数与负数的加法,因此必须制定两套运算规则,一套用于正数加正数,还有一套用于正数加负数。从电路上说,就是必须为加法运算做两种电路。

现在,再来看2的补码表示法。

00010000

+11111000

---------

100001000

可以看到,按照正常的加法规则,得到的结果是100001000。注意,这是一个9位的二进制数。我们已经假定这是一台8位机,因此最高的第9位是一个溢出位,会被自动舍去。所以,结果就变成了00001000,转成十进制正好是8,也就是16 + (-8) 的正确答案。这说明了,2的补码表示法可以将加法运算规则,扩展到整个整数集,从而用一套电路就可以实现全部整数的加法。

2的补码的本质及正确性

我们要看先一下模的概念

“模”是指一个计量系统的计数范围。如时钟等。计算机也可以看成一个计量机器,它也有一个计量范围,即都存在一个“模”。例如:时钟的计量范围是0~11,模=12。表示n位的计算机计量范围是0~2^(n)-1,模=2^(n)。“模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的余数。任何有模的计量器,均可化减法为加法运算。例如:

假设当前时针指向10点,而准确时间是6点,调整时间可有以下两种拨法:你可以往回拨4个小时,也可以向前拨8个小时(12-10+6,在钟表系统里模是12)。在以12模的系统中,加8和减4效果是一样的,因此凡是减4运算,都可以用加8来代替。对“模”而言,8和4互为补数。实际上以12模的系统中,11和1,10和2,9和3,7和5,6和6都有这个特性。共同的特点是两者相加等于模。对于计算机,其概念和方法完全一样。n位计算机,设n=8, 所能表示的最大数是11111111,若再加1称为100000000(9位),但因只有8位,最高位1自然丢失。又回了00000000,所以8位二进制系统的模为2^8。 在这样的系统中减法问题也可以化成加法问题,只需把减数用相应的补数表示就可以了。

再次重申一下这句话:

在以12模的系统中,加8和减4效果是一样的,因此凡是减4运算,都可以用加8来代替。所以对于模为10000 0000的8位系统来说,减去b和加上10000 0000-b是一个道理,而(10000 0000-b)是什么?恰好就是b的补码。

补码怎么求,“取反加一”这口诀怎么来的?

承认了8 - 5 = 8 + (-5的补码)这个事实后,我们来看-5的补码怎么求,“取反加一”怎么来的

其实看完了上面的模的问题,该问题的答案基本已经出来了

-5的补码是 10000 0000 - 5 = 1111 1111 + 1 -5 = (1111 1111 - 5) + 1

1111 1111减去一个数事实上就是在对这个数取反,后面那个是+1

两个小问题的解释:

(1)32位系统里,int的最大值为01111111 11111111 11111111 11111111,加1之后为10000000   00000000   00000000   00000000。这个数是什么?

首先这是个负数-->负数在计算器里都是补码形式存放-->这是个补码-->那么真值是?--> -2147483648(已知负数的补码求该负数,不会求的百度一下吧。

(2)对于unsigned,最大值(32个1)加1后最前面的1自然丢失,剩下32个0,所以就是0。

计算机负数用英语怎么说,负数在计算机中如何表示相关推荐

  1. 计算机的发展史英语作文,选择一种计算机英语作文:求一篇关于计算机发展史的英语作文...

    求一篇关于计算机发展史的英语作文they are what most people think of as "a computer"and even children's toys ...

  2. 英语不好计算机好学吗,英语很差能学计算机专业吗

    英语很差能学计算机专业吗2021-01-19 11:25:58文/李文源 英语很差能学计算机专业吗?答案是可以的,现在大家做的基本上都是应用层面的开发,这个跟英语关系不太大,当然如果想做偏底层应用的话 ...

  3. 留学面试 计算机专业话题,英语面试_美国留学计算机专业详解_沪江英语

    计算机科学专业可是一个招生大户,因为现在计算机发展势头比较猛,很多人都投身到这个领域的研究里边.而且由于在计算机整个领域的强大,近些年很多学生涌入到了这个专业里.虽然它的拿奖情况不如数学,物理,化学这 ...

  4. 计算机的用途英语作文带翻译,关于计算机的英文作文带翻译

    计算机是一种很神奇的机器.它有很多类型.现在,大多数计算机都有存储器.这?意味着信息可以存储起来,而且可以随时取出.所以,现在计算机被广泛应用. 最古老的计算机是算盘,很久以前在中国使用.经过了多个世 ...

  5. 上海计算机等级一级 英语,全国和上海的计算机等级考试一级内容有什么差别?...

    全国和上海的计算机等级考试一级内容有什么差别?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 全国和上海的计算机等级考试 ...

  6. 华科计算机专硕英语几,考研考华科计算机考数学几英语几啊,另外考华科数..._考研_帮考网...

    华科计算机考研专业课为834计算机专业基础综合,包括数据结构和计算机网络两部分. 1.数据结构(60%) 考试范围:线性表(包括队列.堆栈等特殊线性表)的基本逻辑结构特征理解与应用:线性表(包括队列. ...

  7. 华科计算机专硕英语几,2020华中科技大学计算机专硕考研成功经验谈

    原标题:2020华中科技大学计算机专硕考研成功经验谈 距离拟录取名单公布已经过了1个多月,我的考研历程也终于画上了一个圆满的句号,过程很艰辛,但结局很圆满.最近两天终于闲下来了,这是我过去一年来最悠闲 ...

  8. 计算机cims的英语全称是什么,cims(计算机cims是什么)

    CIMS是英文Computer Integrated Manufacturing Systems或contemprorary的缩写,直译就是计算机/现代集成制造系统.计算机集成制造----CIM的概念 ...

  9. 计算机复试面试英语自我介绍,天津师范大学计算机研究生复试面试英语自我介绍...

    天津师范大学计算机研究生复试面试英语自我介绍 good morning,madam and sir!it's a great honor for me to meet you here today. ...

最新文章

  1. hbase设计方案1
  2. Fedora再次安装手记--很爽的Wine工具
  3. 【Python学习系列九】Python机器学习库scikit-learn实现SVM案例
  4. MobaXterm 设置在使用export DISPLAY=xx.xx.xx.xx:0.0后调用图形化界面不弹出提示方法
  5. 通用权限管理系统组件 (GPM - General Permissions Manager) 不改数据库、甚至不写代码就集成铜墙铁壁权限管理组件...
  6. Excel 宏编码实现,指定列的字符串截取
  7. centos7 安装 openssl和openssl升级
  8. UnityShader4:UnityShader的形式
  9. LwIP协议栈的学习与应用
  10. Linux字符设备驱动详解
  11. 免费的PPT素材网站
  12. HTML+CSS+JavaScript实现植物大战僵尸
  13. noi linux 比赛使用哪个编译器,noi linux简介.pdf
  14. 电源设计经验之 MOS 管驱动电路
  15. 计算机硬盘使用寿命,一块机械硬盘的寿命能超过十年吗?
  16. 企业微信自建应用开发
  17. 金针探底技术分析(下)
  18. 腾讯私有云TStack 自动化部署
  19. 用Python对淘宝用户行为数据的分析
  20. 尚硅谷-SpringMVC篇

热门文章

  1. 以智能数据架构,挖掘增长金矿
  2. 09、组策略之软件分发(05)
  3. 我的春招求职经验分享(已拿阿里京东网易等 5 个 offer)
  4. SpringJunit测试类 BaseTest(转)
  5. 高并发測试工具webbench
  6. 微软推Windows 10新内测版 仍以“修复”为特色
  7. 9.1-全栈Java笔记: 容器泛型—认识Collection接口
  8. RedisTemplate实现事物问题剖析和解决
  9. 安卓飞机大战(三) 弹出对话框
  10. Tengine ngx_http_sysguard_module 过载保护模块使用