分享
基于课程体系的原码、反码和补码教学研究_向继文.pdf
下载文档

ID:2253498

大小:1.51MB

页数:4页

格式:PDF

时间:2023-05-04

收藏 分享赚钱
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于 课程体系 反码 补码 教学研究
本栏目责任编辑:王力信息化与计算机教育Computer Knowledge and Technology电脑知识与技术第18卷第36期(2022年12月)第18卷第36期(2022年12月)基于课程体系的原码、反码和补码教学研究向继文(吉首大学信息科学与工程学院,湖南 吉首 416000)摘要:将原码、反码和补码知识置于课程体系中,开展了相关的教学研究。文章讨论了无符号数和带符号数的区别;无符号数在数字系统中的表示方法;带符号数的原码、反码和补码的定义及其特点,并通过实例分析了在学习和使用过程中需要注意的一些问题。提出了将原码、反码和补码知识的教学置于课程体系背景中的观点,从而帮助学生建立课程体系的观念,将不同课程中相关知识融会贯通,避免在不同课程中对相同知识内容孤立地加以学习,有利于促进学生对知识的理解、记忆和应用。关键词:课程体系;C无符号数;带符号数;原码;反码;补码中图分类号:G642文献标识码:A文章编号:1009-3044(2022)36-0154-03开放科学(资源服务)标识码(OSID):1 引言在 数字电子技术基础 微机原理与接口技术汇编语言程序设计 等课程中,数制系统都是非常重要的内容,是要求学生理解和掌握的重要知识点1。对于学习高级语言程序设计的学生来说,掌握好数制系统也有利于更深入地理解和分析程序对数据处理的实质。在数制系统中,对学生较难的是原码、反码和补码,也是数制系统教学的重点和难点。经过多年的研究与实践,对原码、反码和补码的教学取得了一定的经验,提出了基于课程体系的原码、反码和补码的教学观点。文中仅讨论整数的原码、反码和补码的表示及教学方法,小数的表示对大多数专业而言是不需要掌握的,需要处理小数时在汇编语言中可以设计算法用整数模拟小数,或者直接用高级语言处理。2 无符号数和带符号数原码、反码和补码是带符号数的表示方法,要掌握好原码、反码和补码知识,首先要清楚无符号数和带符号数的区别,以便正确使用这两类数据。日常生活中,例如:电话号码、房间的门牌号码、计算机内存单元的地址等,这些数值没有数学上的正负含义,是无符号数。但是身高体重之类的数就必须为正数,在银行存取款时,存进去的金额是正数,会使得银行余额增加,取出来的金额是负数,使得银行余额减少,这类数据就是带符号数。在数字系统中采用二进制数,只要将无符号数用二进制数表示,高位用0补到规定的位数就可以了。带符号数有正负符号,符号要数码化,且有原码、反码和补码多种表示方法,比无符号数要复杂很多。反过来说,学习原码、反码和补码知识就是学习带符号数在数字系统中的表示方法。此外,如果给出一个二进制数,这个数究竟是带符号数还是无符号数,该怎么看待怎么处理呢?很多学生也是迷惘的。实际上,这个数可以将它视为无符号数,也可以视为带符号数。在汇编语言中,当将这个数看作无符号数时,就用无符号数的指令去处理,将这个数看作带符号数时,就用带符号数的指令去处理,两类数用汇编指令加以区分,分别处理。在高级语言例如 C 语言中,用数据类型区分。如 unsignedchar、unsigned int 之类的处理无符号数,用 char、signed char、int、signed int之类的处理带符号数。由于符号位的问题,导致位数相同的二进制数,作为无符号数和带符号数时表示的数值范围是不相同的。例如十六位二进制数,表示的无符号数范围为065535,用补码表示的带符号数范围为-32768+32767。这个特点在数字电子技术、微机原理与接口技术、C语言等课程及各类嵌入式处理器中都是相同的,实现了把多门课程的知识串在一起,有利于学生构建课程体系,打通课程之间的壁垒。3 原码表示方法原码是用来表示带符号数的,这就需要将正、负符号数码化。在二进制数的前面增加一位符号位,符号位为0表示这个数是正数,符号位为1表示这个数是负数,这种形式的数称为原码2。对原码,可以用数收稿日期:2022-04-15基金项目:吉首大学2021年课程教学信息化建设项目“微机原理与接口技术(JSUPY202115)”;2021年湖南省普通高等学校教学改革研究项目“新工科”背景下 数字电子技术 实验教学改革与研究(HNJG-2021-0678);2020年湖南省普通高等学校课程思政建设研究项目“信号与系统”课程思政教学研究与实施(HNKCSZ-2020-0343)作者简介:向继文(1970),男,土家族,湖南省龙山县人,高级实验师,学士,研究方向为电子技术、计算机应用、学科教学。E-mail:http:/Tel:+86-551-65690963 65690964ISSN 1009-3044Computer Knowledge and Technology电脑知识与技术Vol.18,No.36,December2022154DOI:10.14004/ki.ckt.2022.2274信息化与计算机教育本栏目责任编辑:王力Computer Knowledge and Technology电脑知识与技术第18卷第36期(2022年12月)第18卷第36期(2022年12月)学公式严格定义:一个数连同符号位一起用n位二进制数表示,某一个数X的原码为:X 原=X0 X 2n-1-12n-1-X=2n-1+|X|-(2n-1-1)X 0(1)原码表示的数值范围为-(2n-1-1)+(2n-1-1)3。假设n为8,则最高位为符号位,低七位为数值位,对于正数,最大值为 01111111,对于负数,最小值为11111111,2n-1用以设置最高位即符号位为1。所以,对于8位二进制数,原码表示的数值范围为-127+127,对于 16 位二进制数,原码的表示范围为-32767+32767。原码表示法简单直观,但是存在问题。一个是零的表示不唯一,存在二义性,即+0原=00000000,-0原=10000000,与日常生活习惯不相符合,给机器判零也带来了麻烦。二是不便于进行数学运算。例如,要执行a+b的运算,如果a和b符号相同,则将a和b的绝对值相加,结果符号与a、b相同;如果a和b符号不相同,要比较a和b绝对值的大小,再将a和b的绝对值相减,结果的符号与绝对值大的数符号相同;如果做减法运算,需要采用另外一套规则,这使得电路实现很困难,对于提高芯片的集成度也是极其不利的。因此,数字系统中通常不采用原码来处理带符号数。4 反码表示方法反码用数学公式严格定义,在文献3中,定义如下:X 反=X0 X 2n-1-1(2n-1)+X=(2n-1)-|X|-(2n-1-1)X 0(2)研究该公式,会得到反码的特点如下:(1)最高位为符号位,为0表示这个数是正数,为1表示这个数是负数。(2)对于正数,X反=X原,即正数的反码与原码相同,且能表示的数值范围也相同。(3)对于负数,反码和原码能表示的数值范围相同,但是定义不同,其代码也不相同,将负数原码的符号位保持不变,将各数值位按位求反,即得到负数的反码。反码表示法仍然存在问题。例如,设n=8,则+0反=00000000,-0反=11111111,“0”有两种表示方法。5 补码表示方法补码用数学公式严格定义,在文献3中,定义如下:X 补=2n+X=X0 X 2n-1-12n+X=2n-|X|-2n-1 X 0(3)补码表示的数值范围为-(2n-1)+(2n-1-1)。例如,设 n=8,则八位二进制补码表示的数值范围为-128+127。5.1 补码概念的理解要使学生理解补码的概念及引入补码的优越性,通常从日常生活中的实例入手,常用的一个案例就是钟表,如下图1所示。图1 钟表的表盘表盘上时针指向10点钟,而正确的时间是5点钟,要把时针拨回到5点钟有两种方法:第一种方法是将时针往回拨5个小时指向5点钟,第二种方法是将时针往前拨7个小时指向5点钟。用数学式表示出来,第一种方法为10-5=5;第二种方法为10+7=12+5=5,由于表盘上最大的数是12,当时间超过12点以后,12自动丢失,只保留减去12以后的余数5。从效果上来看,10-5与10+7是等价的,都使时针指向了5点,12称为模,“模”是指一个计数系统的进位基数4。7是-5对模12的补数,也称为补码。该实例说明了对模12而言,10-5减法运算可以通过10+7加法运算来实现。这意味着,模确定以后,在舍弃进位的条件下,减去一个数可以通过加上该数的补码来实现,也意味着在电路中,减法运算可以通过加法电路来实现,从而简化了电路设计。将上例加以拓展,设某表盘有16个刻度,则刻度值为116,模为16,刻度0与16是重合的,与上例中0点与12点是重合的道理相同。在二进制数中,因24=16,即四位二进制数的模是16,依此类推,对于n位二进制数,其模为2n,对于任意负数X,其对于模2n的补码为2n-|X|。通过对这个实例的分析,可以使学生理解模的概念,补码的概念以及通过补码将减法运算转换为加法运算,有利于简化硬件电路的设计。5.2 补码的特点通过分析补码的定义及前面的生活实例,可以得到补码的特点。(1)最高位为符号位,为0表示这个数是正数,为1表示这个数是负数。(2)对于正数,X补=X原,即正数的补码与原码相同,且能表示的数值范围也相同。(3)对于负数,补码的值等于模减去该数的绝对值,再对照负数补码和反码的数学定义式可知,负数的补码等于该数的反码加1。(4)对于零,设 n=8,则+0补=00000000,-0补=00000000,0的表示是唯一的,解决了+0和-0的表示问题。155本栏目责任编辑:王力信息化与计算机教育Computer Knowledge and Technology电脑知识与技术第18卷第36期(2022年12月)第18卷第36期(2022年12月)(5)使用补码表示,可以将真值的减法运算变为机器中的加法运算,从而使CPU内部不再需要设计减法器5,简化了CPU的设计。(6)补码表示时,有少数特殊数的补码对学生比较难以理解。如,当n=8时,-128的补码是10000000,当n=16时,-32768的补码是1000000000000000,这些数补码的符号位和数值位合二为一,可以根据补码的定义式来理解,对非计算机专业的学生而言,还可以把这几个数的补码表示简单地看作是一种规定,计算机程序的编译软件也是按这种方法处理的,学生就容易理解了,否则容易造成困惑。5.3 几个需要说明的问题(1)补码运算的结果仍为补码,类似于二进制数运算的结果仍为二进制数,不可能变成了十进制数。如果运算结果的符号位为0,说明结果是正数,该补码值等于其原码,可以由补码值求出真值。如果运算结果的符号位为1,说明结果是负数,要获得其真值,需要由该补码数求出其原码,再依据原码求出真值。在求负数补码对应的原码时,一般采用的方法是X补补=X原,即对负数的补码再求补码,得到负数的原码。有些同学会想当然地认为将负数补码的数值位按位求反,再减去1,这种方法不仅结果错误,而且再一次产生了减法运算。(2)关于数据溢出的理解如果做的是有符号数的运算,例如,78-54=24,因78-54=78+(-54),使用补码表示时,设n=8,则有78补+-54补=01001110+11001010=00011000,补码运算的结果仍为补码,舍弃进位,符号位为0,说明该补码对应的真值是正数,正数的补码等于原码,故该补码数对应的真值为24,结果正确。如果没有明确是无符号数或者带符号数运算,该如何判断是否溢出。例如,已知两个二进制数的加法运算,01001110+11001010=100011000,因硬件只有8位,故最高位产生的进位自动丢失,有没有产生溢出取决于如何看待这两个数。在计算机中,如果把这两个数看作是无符号数,则产生了溢出,为了防止数据出错,在 CPU 的标志寄存器中,设置了进借位标志CF,并置CF=1,编程者要根据CF位进行处理以得到正确的数据。如果把这两个数看作带符号数,在CPU的标志寄存器中,设置了溢出标志OF,且OF位等于次高位与最高位产生的进位异或运算的结果,即OF=C6C7=11=0,故没有产生溢出。(3

此文档下载收益归作者所有

下载文档
你可能关注的文档
收起
展开