在计算机中,⽆论数值还是数的符号,都只能⽤0、1来表⽰。通常专门⽤⼀个数的最⾼位作为符号位: 0表⽰正数,1表⽰负数。例如:
+18=00010010-18=10010010这种在计算机中使⽤的、连同符号位⼀起数字化了的数,称为机器数。机器数所表⽰的真实值则叫真值。例如机器数10110101所表⽰的真值为-53(⼗进制)或-0110101(⼆进制);机器数00101010的真值为+42(⼗进制)或
+0101010(⼆进制)。可见,在机器数中,⽤0、1取代了真值的正、负号。2. 有符号数的机器数表⽰⽅法实际上,机器数可以有不同的表⽰⽅法。对有符号数,机器数常⽤的表⽰⽅法有原码、反码、补码三种。1) 原码上述机器数表⽰⽅法,即最⾼位表⽰符号、数值位⽤⼆进制绝对值表⽰的⽅法,便为原码表⽰⽅法。换⾔之,设机器数位长为n,则数X的原码可定义为: n位原码表⽰数值的范围是: -(2n-1-1)~+(2n-1-1)它对应于原码的111…1~011…1。数0的原码有两种不同形式: [+0]原=000…0[-0]原=100…0原码表⽰简单、直观,与真值间转换⽅便。但⽤它作加减法运算不⽅便,⽽且0有+0和-0两种表⽰⽅法。2) 反码正数的反码表⽰与原码相同;负数的反码是将其对应的正数各位(连同符号位)取反得到,或将其原码除符号位外各位取反得到。可见,反码的定义可表⽰为: 或者: 例如: [+3]反=00000011(设为8位)[-3]反=11111100(设为8位)n位反码表⽰数值的范围是: -(2n-1-1)~+(2n-1-1)它对应于反码的100…0~011…1。数0的反码也有两种形式: [+0]反=000…0(全0)[-0]反=111…1(全1)将反码还原为真值的⽅法是: 反码→原码→真值,⽽[X]原=[[X]反]反。或者
说,当反码的最⾼位为0时,后⾯的⼆进制序列值即为真值,且为正数;最⾼位为1时,则为负数,后⾯的数值位要按位求反才为真值。3) 补码正数的补码表⽰与原码相同;负数的补码是将其对应的正数各位(连同符号位)取反加1(最低位加1)⽽得到,或将其原码除符号位外各位取反加1⽽得到。可见,补码的定义可⽤表达式表⽰为: 或者: 例如: [+3]补=00000011(设为8位)[-3]补=11111101(设为8位)n位补码表⽰数值的范围是: -2n-1~+(2n-1-1)它对应于补码的100…0~011…1。数0的补码只有⼀个: [+0]补=[-0]补=000…0 (全0)将补码还原为真值的⽅法是: 补码→原码→真值,⽽[X]原=[[X]补]补。或者说,若补码的符号位为0,则其后的数值位值即为真值,且为正数;若符号位为1,则应将其后的数值位按位取反加1,所得结果才是真值,且为负数。综上所述,可以得出以下⼏点结论。(1) 原码、反码、补码的最⾼位都是表⽰符号位。符号位为0时,表⽰真值为正数,其余位为真值。符号位为1时,表⽰真值为负数,其余位除原码外不再是真值: 对于反码,需按位取反才是真值;对于补码,则需按位取反加1才是真值。(2) 对于正数,三种编码都是⼀样的,即[X]原=[X]反=[X]补;对于负数,三种编码互不相同。所以,原码、反码、补码本质上是⽤来解决负数在机器中表⽰的三种不同的编码⽅法。(3) ⼆进制位数相同的原码、反码、补码所能表⽰的数值范围不完全相同。以8位为例,它们表⽰的真值范围分别为: 原码: -127~+127反码: -127~+127补码: -128~+127(4) 上⾯讨论的原码、反码、补码都是针对真值X为整数⽽⾔的。若真值X为⼩数(纯⼩数),则其n位原码、反码、补码的定义应为: 最后要说明的是,当计算机采⽤不同的码制时,运算器和控制器的结构将不同。采⽤原码形式的计算机称为原码机,类似的有反码机和补码机。⽬前以补码机居多,各
种微机基本上都是以补码作为机器码,原因是补码的加减法运算简单,减法运算可变为加法运算,可省掉减法器电路;⽽且它是符号位与数值位⼀起参加运算,运算后能⾃动获得正确结果。3. 数的定点和浮点表⽰当所要处理的数含有⼩数部分时,就有⼀个如何表⽰⼩数点的问题。在计算机中并不⽤某个⼆进制位来表⽰⼩数点,⽽是隐含规定⼩数点的位置。根据⼩数点的位置是否固定,数的表⽰⽅法可分为定点表⽰和浮点表⽰,相应的机器数就称为定点数和浮点数。通常,对于任意⼀个⼆进制数X,都可表⽰成: X=2J·S其中,S为数X的尾数,J为数X的阶码,2为阶码的底。尾数S表⽰数X的全部有效数字,阶码J则指出了⼩数点的位置。S值和J值都可正可负。当J值固定时,表⽰是定点数;当J值可变时,表⽰是浮点数。1) 定点数在计算机中,根据⼩数点固定的位置不同,定点数有定点(纯)整数和定点(纯)⼩数两种。当阶码J=0,尾数S 为纯整数时,说明⼩数点固定在数的最低位之后,即称为定点整数。当阶码J=0,尾数S为纯⼩数时,说明⼩数点固定在数的最⾼位之前,即称为定点⼩数。定点整数和定点⼩数在计算机中的表⽰形式没什么区别,其⼩数点完全靠事先约定⽽隐含在不同位置,如图1.5所⽰。图1.5定点整数和定点⼩数格式2) 浮点数当要处理的数是既有整数⼜有⼩数的混合⼩数时,采⽤定点数格式很不⽅便。为此,⼈们⼀般都采⽤浮点数进⾏运算。浮点数⼀般由4个字段组成,其⼀般格式如下: 阶符Jf阶码J数符Sf尾数(也叫有效数)S←———阶码部分———→←————尾数部分————→ 其中阶码⼀般⽤补码定点整数表⽰,尾数⼀般⽤补码或原码定点⼩数表⽰。浮点数的实际格式多种多样。如80486的浮点数格式就不是按上述顺序存放4个字段的,⽽是将数符位Sf置于整个浮点数的最⾼位(阶码部分的前⾯),且尾数和阶码部分有其与众不同的约定,详见2.3.1⼩节。为保证不
损失有效数字,⼀般还对尾数进⾏规格化处理,即保证尾数的最⾼位是1,实际⼤⼩通过阶码进⾏调整。例如,某计算机⽤32位表⽰⼀个浮点数,格式如下: 31 30 24 23 22 0阶符阶码数符尾 数 其中阶码部分为8位补码定点整数,尾数部分为24位补码定点⼩数(规格化)。⽤它来表⽰⼀个数-258.75,则可按该格式变换如下: (-258.75)10= (-
100000010.11)2= (-0.10000001011)×29= (1.10000001011000000000000)原×2(00001001)原=
(1.01111110101000000000000)补×2(00001001)补所以,-258.75在该计算机中的浮点表⽰为:00001001101111110101000000000000按照这⼀浮点数格式,可计算出它所能表⽰的数值范围为: -1×227-1~+(1-2-
23)×227-1显然,它⽐32位定点数表⽰的数值范围(最⼤为-231~+(231-1))要⼤得多。这也正是浮点数表⽰优于定点数表⽰的突出点之⼀。4. ⽆符号数的机器数表⽰⽅法⽆符号数在计算机中通常有三种表⽰⽅法: (1) 位数不等的⼆进制码。(2) BCD码。(3) ASCII码。其中BCD码的表⽰形式⼀般⼜有两种: 压缩BCD码(或叫组合BCD码,紧凑BCD码)和⾮压缩BCD码(或叫⾮组合BCD码,⾮紧凑BCD码)。前者每位BCD码⽤4位⼆进制表⽰,⼀个字节(8位⼆进制)表⽰2位BCD码,如10010011B表⽰⼗进制数93;后者每位BCD码⽤⼀个字节表⽰,⾼4位总是0000,低4位的0000~1001表⽰0~9,例如93如⽤⾮压缩BCD码表⽰,则需⽤2个字节(16位⼆进制):
00001001┊00000011ASCII码表⽰与⾮压缩BCD码表⽰很相似,低4位完全相同,都是⽤0000~1001表⽰0~9;差别仅在⾼4
位,ASCII码不是0000,⽽是0011。ASCII码⼀般在计算机的输⼊、输出设备中使⽤,⽽⼆进制码和BCD码则在运算、处理过程中使⽤。因此,在应⽤计算机解决实际问题时,常常需要在这⼏种机器码之间进⾏转换。数字1 计算机中表⽰为00000001 数字2 00000010 数字3 00000011 数字4 00000100 数字5 00000101数字6 00000110 数字7 00000111 数字8 00001000 数字9 00001001
数字10 00001010
浮点数的基数什么意思00分享举报

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。