04-学习材料:二进制的负数表达

上传人:黑** 文档编号:52360754 上传时间:2022-02-08 格式:DOCX 页数:16 大小:696.35KB
返回 下载 相关 举报
04-学习材料:二进制的负数表达_第1页
第1页 / 共16页
04-学习材料:二进制的负数表达_第2页
第2页 / 共16页
04-学习材料:二进制的负数表达_第3页
第3页 / 共16页
点击查看更多>>
资源描述
、正整数与零的表达要说负耕2表达,先说正数1.字节与比特在计算机中,一个二进制数字,0或者1,我们乍1位,也称作一个I;涂cP(bit),而8个二进制数字称作一个字节(Byte)。通常,比特使用小写字母“b”表示,字节使用专序母B”表示。 $2-表达正整妒计麒冲,通常采用有限个炒立来表示一个整数。恣板;如果一个比特来示一术g,那只能表达两个霆 0或者1。如果使舷个比特,那么即可织窘达四个整数:00、01、10和11 (也就是0、1、2、3)o如果是4个比特,则可以表达 16 个数字 0000、0001、0010、0011、15o显然,如果杏*个比特位,则可以辟通常在炳TL中一 节),下:,采用8比特或聂4比特(8字节)1110. 1111,也就是0到:2个数据,从0至乖-1。坂掌节)、16比特(2字粉、32比特(4字一个整数。不同的段字节数 位数最小值最大值cPcP123264N8P8163.溢出问题(这个C 28 1 = 255)rr)216- 1 = 65,5350232 _ i = 4,294,痼,295尊264 _ 1 = 18,446,073,709,551,61502N 1cP0表1不同长度的数据所表达的非负整数的范围计算机季秘整数的时候,数,其考蜂围是有限的,这时候坷珞计算的时候,匕燃警字节整数,在上表中,靠的可以标识的数字萩买5,如果才存储单质膏有一个数字是255底结果做了一个计算时255 + 1,结果会是多少呢?这要看计算机中的二进制如何!)计算的了。的二进电为11111111,芝善整数255到1 0000 0000,结果需要9位来存储,但是计算机依旧只会提供8位来存储,因此会将最高位的1舍去,那么1 0000 0000居然变成了 0000 0000,这样计算结果就出错了,也弋臀说在8位单字节的臀中,255+1会得到呻这种在计算过程中超出了慈密机表达范围而导致鬼蚌错误,我们叫做溢够同样的,在单字节的计*学254+4会得到2,硕+200会得到144。潺衡仅仅发生在加法,禽、只有两个:第一,扩大数据的表达范围,比如在双字节,或四字节、八字节的计算中,255+1、254+2和200+200都不会发生溢出。第二,当然是小心谨慎”的计算,在具连察如减或乘除计算的时候调整计算次序防止溢佥Jq q Q刚满8位,加1cP循潺注意的是,了 ,即41111111”,么这个值到底是-1还是255呢?这取决于程序如何解释这个数据。如果这8个1理解为有符号警那么结果就是-1。臂认为把这个数字理解君无符号数,那么这个数字瞬示255。g下野慎C+程序向一个筹蓄有符号整数中存公赢字节无符号整数255, 蠢被理解成了 1。慝斜”右侧的部分将枣斜者理解这段程序的候用。注意,类型“char”表面含义为字符,但是在C+中通常用来存储单字节整数。cP#i ncIude us i ng namespace std;void mai n ()cPuns i gned char A = 255;char B = (char)A;cout (i nt)B end I;程序入口,程序从这里开始运行建立一个单字节无符号整数存储单元A,存入255 切将A理解为一个有符号的单字节整数,传输给B/按照有符号整数的方式输出B的值例程R将无符号的单字节整-1Press any key to cont&e 图1例程二-1将无符号的单字节整数理解为有符号的单字节整数的运行结果在计算机中,我们不仅要表达非负数,并且要表达负数。在计算机中,负数的表达通常采用补码。(翊在,我们以四位系统臾切,介绍补码的由来。送意,极少Q有计算机采用即跃统的。这里采用四彖统为例,仅仅是为忐*举例,便于读者理在四位系统中数字四个零,也就是贮r来表示的。现在我设法表示第一个负数:1。3于0 1 = L所以,我们设法将0000减去亍0001:0 0 00o o N;v 、缨?显然,谨t个竖式计算中,需祯位才能完成运算。假设*瘫行借一位,4、cPcP,臂此时又无法借位。/使得竖佥篓为10000减去00磷很容得得到计算结矽(1) 0 0 0 0一 0 0 0 11111于是,在性9码系统中,1111气枣上1。此时,可能有读枣快问,1111不是表示15 蒙星四位系统中,我4减表示16个数字。前标可以全部表示、为非负谿菌015,可以比等E114,或者一2 的:所以,我们必须繇所取金 我们的得到了1,靠么就可以进一步做减蚤 进而得到一2,如下表:二进制补码1110&1101000011111100-41011101010011000表1四位补码表示0和负数cP二进制补码01110110用表示的数字01000011cP001000010000cPv1110cPcPcP9当我们褊 1000时停止,此藤云的数字为-8,如果癖下做减法就会得、到011玲第一个比特位就从1 善了 Oo我们通常将羔钏比特位(即“首位澎为I威字作为负数,而首位备0的数字作为非负数分于是,四位补码系统姿16个完整的数字为:1101cP110010111010100&V1000-8cP表2四位补码表示-8至7的整数部数。这些整数郁在这里,恕参达了一8至! 7共(1)J癌忡以0开头的为谶凝,以1开头的为麻嫩zzy-从0000到0111是蜂的,其表的数据是递增的。从10度1111,是递增的,其表的数据8至1也是递增的。C100(4)0000和最大的11(3)二进制数据0111表达的是最大整数7, 0111 X要加上1,就会变成F 1000表达的是最疝字一8 okqP大多数计算机系统在表达负整数时,都是采用补码系统。2.补码的运算满一大优点就是计算建篷做加法或减法运算畤咨需要考虑补码的羔而直接运算,结果却依然正确。我们可以利用竖式计算一2 + 5,以及2 5。2、2、5在四位补码系统中分别为1110、0010和0101:从左式中我们可以看到,1110(2)和0101 (5)求和,得到10011,去掉首位进位1,留下0011,即为答案3o右式中,0010 (2)强行借位后减去0101,得到2中我们看到,即为答案-3。正确的,如果0110 + 0110:也就是6 + 6,会得到1100c而1100在补码表示的是-4,却不是我们希望的12。究其原因是12已经超出了四位补码系统所能表达的最大数字7 (Ollpo我们把这种现象叫做“溢出” o3.汁I位的补码VV发、我们可以将四位补码推广到TV位补码系统。在7V位补码系统中有以下规律:(1)各位全部为0,总是表示0。cP(、任部为1,总是表示注、是由0000. 0000 - 0000. 0001 得到的。后面全部为1,首位为0,表示的是最大整数2N-1- 1。表示的是最小整数-2N-1。下表中列出早7V位系统中补码的表示方法:首位为1,后面全部为0,01112-1_ 20110正2NT_ 3数部分0001000001UC-11101数部(2N-1 一 2)1010分一 (2N-1 一 1)10002仁数值1-2. 土。您位0111111101111110011111010101r oolo0000 00100000 00010000 000011111111111111101111 1101W0O 00101000 00011000000001111111 111111110111 1111 1111 111001111111 1111010000 0000 0000 0010%0000 0000 0000 00010000 0000 0000 0000mi mi iiin1111 1141 1111 11101111 1111 1111 11011000 0000 0000 0010scr1000 0000 0000 000110(0000 0000 000032位32 W莎64位0111 -111164位N位0111-111032位0111-111064位0111-1110N位0111-1101J 32位0000-0010J 32位淳oooo-iooi3 32位0000 -00003 32位32位1111-111032位miJ 32位1000-001032位1000-00013 32 位,1000 32 40111-11010000 -001064位0000-000164位0000 -0010J N 位0000泓01N位0111-1101N位0000-000064位G1111,43)111待位mi -mo64位1111-110164位1000 -0010理*.0001y% 64 位1000 -000064位0000 -0000N位1111 1110J N位冒1111 -HoiN位1000-0001N位1111 1111N位1000-01000-0010N位?同目1110111000010001,加 1 60010010,即为 18,痂以xS示一1恣少然,11101110表寸正数应当为238o 冷& & &又如,二漕11101110牝取反加一。11101110 表表3N位系统中补码的表示。 。 。 。4.二进制补码与十进制负数的转换cPcPcP如臂弟存储单元需要写寸膏一35” ,那么写溯南会是多少呢。我4原*通常收嵌是枣风加丁。这里辎命位系统。首先3500100011)2 ,将其梦进制代码逐位取反(0变成1, 1变成0),得到11011100,然后加1,得到11011101即为一35的补码。注意,这两种方法都是采用取反加一,没有“取反减一之说。 一般的,在计算机中,一个长度为N的整数,即可以表达为不考虑符号的非负整数,我们称作无仅f整 也可以表达为工介用补码表达的有正有您的数字,们称为有符号豪有符号数的负数噤笠%用补码表示。不酵矗所能表达的无符vW,以及有符号整数疏蔺如下:乂疹A /A.11字节数位数无符号整数最小值 最大值窖符号整数最小值 最大值-128127表1不同长度的数据所表达无符号整数与有符号整数的范围2 不同计算机语言中的整数cP大多数编零灸所谓的整数默认都是指有符号整数。不过歹于整数的恋整不一样的,下表中疝常用的编程语言对整数的不同称呼。/X A V人语言。每位1字节16在遂字节32位4字节64位8苏有符号无符号有符号无符号有符号无符号有符号无符号C+_int8charunsigned Unt8unsiFiar_intl6shortunsigned _intl6unsigned shot_int32QintJ longunsigned _int32unsigned intunsigned long_int64longjLe!ngunsigned _int64unsigned long longC#sbyte./V次 byteshortintuint./ V-longlongJava一shortX涉-intlongVBByteIntegerLongDelphiShortintByte&SmallintWordIntegertongintCardinalLongwordInt64&Matlabint8intl6uintlsQ)int32uint3244uint64表2不同的计算机语s/X不同类型的整数的不的。比如,虽然在C+中,16位有符号整型叫做short,而在VB中叫做Integer,cPcP但是都是蠢整数,负数部分用朴蜓示,表达范围都是夫够68到32767o 、其实这言中的有符号数的分全部采用补码形爰京。各种语言作支昭的数够室型的表达范围全部符站表1中给出数据表达蚤围。表中的“-”表示蚤种语言可能不提供这种数据类型。cP负数迪有其他表达方法,例如辰码和偏移码。我们还是五、负整他表示方法cP4位系统简单的说明参W发w或反码是最简单的负数表示方法。只要将首位变为1,即变成负数。例如,四位系统中,1表示七0001,那么1001即卷1 ; 5表示为0101,笠么1101表示-5o反码有氏=c法像补码一就囊对正负数进行计雨另缨裒示负数的方法是懋衣福题,首先是会有20,即0000和100发展外,反码无烫码。偏移码用首位为脉示负数,首位为七示正数:在四位系统中使用00溢、到1111分别表示一W至7。偏移码多用在硬毒系统中。反码与偏移码毛达的数字如下表::&Qp二进制补码0进制反码二进制偏移码7654310表示的数字-2cP0111010101000011001000010000 J01110110010101000011001000011110110111001011101010010000/ 10001001101010111100Xiioi11101101110010111010lool qP1000011001010100111100110010、00Q1愈00四位系统中补码、反码、偏移码的表示cPcP
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!