第2章 计算机中数据信息的表示和运算-浮点表示
第2章_数据类型、运算符和表达式《C语言程序设计(第三版)》-电子教案

2.2 标识符、常量与变量
符号常量
【例2-1】输入圆的半径,计算周长和面积。 #define PI 3.14159 void main() { float r,c,s; scanf("%f",&r); c=2*PI*r; s=PI*r*r; printf("r=%f,c=%f,s=%f\n",r,c,s); }
以下是合法的整型常量:
2.2 标识符、常量与变量
实型常量
实型常量只能用十进制形式表示 表示形式:
小数形式。由数字序列和小数点组成,如 3.1415926、-0.15、.15、2.等都是合法的实型 常量。 指数形式。由十进制数加上阶码标志“e”或 “E”及阶码组成,如3.14e-4或3.14E-4表示 3.14×10-4。
2.2 标识符、常量与变量
2.2.3 变量
在程序运行过程中,其存储的值可以被改变的量称 为变量 变量必须通过标识符进行说明,称为变量名。 变量名和内存单元地址存在映射关系,程序可以通 过变量名寻址,从而访问其存储的数据。
2.2 标识符、常量与变量
变量的定义和说明
数据类型 变量名1[,变量名2,…,变量名n];
long型转换成float型时由原来可达10位整数变成只有7位有效数字精度丢失但由于数的范围扩大了数据类型从较低级提升到较高级随着竞争日益激烈酒店嘴中的肥肉被大肆抢夺各大酒店在这场竞争中几乎溃不成军
21世纪高等学校精品规划教材
第2章 数据类型、运算符 和表达式
掌握C语言的基本数据类型 掌握标识符、关键字、常量和变量的使用 掌握运算符、表达式以及数据类型之间的转换 等 掌握简单数据的输入输出
第二章 计算机中的信息表示 2.1 数在计算机中的表示

(e)八进制和二进制之间的转换 1、为什么要有八进制和十六进制 2、二进制到八进制之间的转换 八进制的特征:有0-7八个数,逢八进一 二进制和八进制之间的转换 例: (10100.1011)2——(?)8 010 100 . 101 100 2 4 . 说明划分时的注意事项 5 4
3、八进制和二进制之间的转换 例: (326.125)8——(?)2 3 2 6 . 1 2
011 010 110 . 001 010
5
101
(f)二进制和十六进制之间的转换 十六进制的特征: 二进制和十六进制之间的转换
(11010111100.11011)2 = (0110 1011 1100.1101 1000)2 = (6BC.D8)16 (F28)16=(1111 0010 1000)2
在原码中0有两种表示: [+0]=00000000 [-0]=10000000
原码能够表示的数的范围:
特点: (1)直观,与真值转换很方便; (2)进行乘、除运算方便 (3)加、减运算比较麻烦,比如:一 个正数和一个负数相加必须要考虑符 号问题。
(f)反码:
规则:对于正数,其反码与原码相同, 对于负数,符号位为1,其数值位X的 绝对值取反 例:[+2]反=00000010 [-2]反=11111101 [+0] 反=00000000 [-0] 反=11111111
2 信息的表示 2.1 信息在计算机中的表示
为什么要采用二进制
1、电路简单: 2、工作可靠: 3、简化运算: 4、逻辑性强:
2.1.1 数制及其转换
1)数制 ①什么是进位计数制 一般而言,对于任意的R进制数 An-1An-2......A1A0A-1A-2A-3.......A-m (其中n为整数位 数,m为小数位数) 其值可以表示为: An-1×Rn-1+An-2×Rn-2......A1×R1+A0×R0+ A1×R-1+A-2×R-2+A-3×R-3.......A-m×R-m
计算机组成原理 第2章

《计算机组成原理与实验》 冶金工业出版社
计算机组成原理——第 2章
原码、反码与补码
• 例2:已知[x]补=11101110,求[-x]补、[x]反、[x]原及真值x。 解:[-x]补=00010010 ([x]补取反加1) [x]反=11101101 ([x]补减1) [x]原=10010010 ([x]原低7位取反) 真值x=-0010010B=-12H=-18D
《计算机组成原理与实验》 冶金工业出版社
计算机组成原理——第 2章
补码表示法
• 对定点整数,补码的定义是: X [X]补= 2n > x 0 (mod 2n+1)
2n+1+x=2n+1-|x|
0 > x -2n
《计算机组成原理与实验》 冶金工业出版社
计算机组成原理——第 2章
补码表示法
• 利用补码可以将减法运算变成加法运算来实现。但是 根据补码定义,求负数的补码要从2减去|X|。为了用加 法代替减法,结果还得在求补码时作一次减法,这显 然是不方便的。可以利用反码的方式解决负数的求补 问题。 • 另一方面,利用补码实现减法运算,可以和常规的加 法运算使用用一加法器电路,从而简化了计算机的设 计。
移码表示法
• 移码的定义:[X]移=2n +X (-2n = <x< 2n)n为阶码数值位 (除符号位)
• 移码的计算:先求出X的补码,再对其符号位取反或直接利用定 义计算。
《计算机组成原理与实验》 冶金工业出版社
计算机组成原理——第 2章
移码的特点
(1)在移码中,最高位为“0”表示负数,最高位为“1”表示正数。 (2)移码为全0时,它所对应的真值最小,为全1时,它所对应的真 值最大。因此,移码的大小比较直观地反映了真值的大小,这有 助于比较两个浮点数阶码的大小。 ( 3 ) 真 值 0 在 移 码 中 的 表 示 形 式 是 唯 一 的 , 即 [+0] 移 =[-0] 移 = 100…0。 (4)移码把真值映射到一个正数域,所以可将移码视为无符号数, 直接按无符号数规 则比较大小。 (5)同一数值的移码和补码除最高位相反外,其他各位相同。
计算机组成原理第二章-计算机数据表示方法

9
一、计算机内的数据表示
6) 移码(增码)表 示
•移码表示浮点数的阶码,只有整数形式,如IEEE754中阶码用移码表示。
设定点整数X的移码形式为X0X1X2X3…Xn
则移码的定义是:
[X]移= 2n + X
2n X - 2n
•具体实现:数值位与X的补码相同,符号位与补码相反。
[X]补
10000001 11111111
[X]移
00000001 01111111
00000000 10000000
00000001 01111111
10000001 11111111
Confederal Confidential
11
一、计算机内的数据表示
3.计算机中常用的两种数值数据格式 1)定点数 •可表示定点小数和整数 •表现形式:X0.X1X2X3X4……..Xn
Confederal Confidential
15
一、计算机内的数据表示 IEEE754 32位浮点数与对应真值之间的变换流程
Confederal Confidential
16
一、计算机内的数据表示
例5 将十进制数20.59375转换成32位IEEE754格式浮点数的二进 制格式来存储。
解:先将十进制数换成二进制数: 20.59375=10100.10011(0.5+0.25+0.125+0.0625+0.03125) 移动小数点,使其变成1.M的形式 10100.10011=1.010010011×24
16
17
一、计算机内的数据表示
例6 若某浮点数x的二进制存储格式为(41360000)16 ,求与其对应 的32位浮点表示的十进的值。
计算机系统导论——读书笔记——第二章信息的表示和处理

计算机系统导论——读书笔记——第⼆章信息的表⽰和处理第⼆章信息的表⽰和处理2.1 信息存储2.1.1 ⼗六进制2.1.2 字数据⼤⼩2.1.3 寻址和字节顺序1.地址:对象所使⽤的字节中最⼩的地址2.⼤端法:最⾼有效字节在前⼩端法:最低有效字节在前(⼤多Intel兼容机使⽤)3.发送⽅机器(内部代码)——>⽹络应⽤程序(⽹络标准)——>接收⽅机器(内部代码)4.⼩程序——打印程序对象的字节表⽰1 #include <stdio.h>2using namespace std;34 typedef unsigned char * byte_pointer;//定义类型:指向unsigned char的指针56void show_byte(byte_pointer start, size_t len){7 size_t i;8for(i = 0; i < len; ++i)9 printf(" %.2x", start[i]);//%.2x表⽰整数必须⽤⾄少两个数字的⼗六进制格式输出10 printf("\n");11 }1213void show_int(int x){14 show_byte((byte_pointer) &x, sizeof(int));15 }1617void show_float(float x){18 show_byte((byte_pointer) &x, sizeof(float));19 }2021void show_double(double x){22 show_byte((byte_pointer) &x, sizeof(double));23 }2425void show_pointer(void * x){//void*是特殊类型的指针,没有相关联的类型信息26 show_byte((byte_pointer) &x, sizeof(void *));27 }2829int main(){30int x;31float y;32double z;33while(scanf("%d %f %lf", &x, &y, &z)){34 show_int(x);35 show_float(y);36 show_double(z);37 show_pointer(&x);38 show_pointer(&y);39 show_pointer(&z);40 }41return0;42 }输⼊111-1-1.0-1.0123451.0011.001输出01 00 00 0000 00 80 3f00 00 00 00 00 00 f0 3f98 f5 bf ef fe 7f 00 0094 f5 bf ef fe 7f 00 0088 f5 bf ef fe 7f 00 00ff ff ff ff00 00 80 bf00 00 00 00 00 00 f0 bf98 f5 bf ef fe 7f 00 0094 f5 bf ef fe 7f 00 0088 f5 bf ef fe 7f 00 0039 30 00 00c5 20 80 3f6a bc 74 93 18 04 f0 3f98 f5 bf ef fe 7f 00 0094 f5 bf ef fe 7f 00 0088 f5 bf ef fe 7f 00 00我的电脑是MaxOS,可以看出它是64位系统,采⽤⼩端法表⽰5.可以通过在终端(mac是terminal,windows是命令⾏⼯具)执⾏命令man ascii得到⼀张ASCII字符码表,回车后运⾏结果如下ASCII(7) BSD Miscellaneous Information Manual ASCII(7)NAMEascii -- octal, hexadecimal and decimal ASCII character setsDESCRIPTIONThe octal set:000 nul 001 soh 002 stx 003 etx 004 eot 005 enq 006 ack 007 bel010 bs 011 ht 012 nl 013 vt 014 np 015 cr 016 so 017 si020 dle 021 dc1 022 dc2 023 dc3 024 dc4 025 nak 026 syn 027 etb030 can 031 em 032 sub 033 esc 034 fs 035 gs 036 rs 037 us040 sp 041 ! 042 " 043 # 044 $ 045 % 046 & 047 '050 ( 051 ) 052 * 053 + 054 , 055 - 056 . 057 /060 0 061 1 062 2 063 3 064 4 065 5 066 6 067 7070 8 071 9 072 : 073 ; 074 < 075 = 076 > 077 ?100 @ 101 A 102 B 103 C 104 D 105 E 106 F 107 G110 H 111 I 112 J 113 K 114 L 115 M 116 N 117 O120 P 121 Q 122 R 123 S 124 T 125 U 126 V 127 W130 X 131 Y 132 Z 133 [ 134 \ 135 ] 136 ^ 137 _140 ` 141 a 142 b 143 c 144 d 145 e 146 f 147 g150 h 151 i 152 j 153 k 154 l 155 m 156 n 157 o160 p 161 q 162 r 163 s 164 t 165 u 166 v 167 w170 x 171 y 172 z 173 { 174 | 175 } 176 ~ 177 delThe hexadecimal set:00 nul 01 soh 02 stx 03 etx 04 eot 05 enq 06 ack 07 bel08 bs 09 ht 0a nl 0b vt 0c np 0d cr 0e so 0f si10 dle 11 dc1 12 dc2 13 dc3 14 dc4 15 nak 16 syn 17 etb18 can 19 em 1a sub 1b esc 1c fs 1d gs 1e rs 1f us20 sp 21 ! 22 " 23 # 24 $ 25 % 26 & 27 '28 ( 29 ) 2a * 2b + 2c , 2d - 2e . 2f /30 0 31 1 32 2 33 3 34 4 35 5 36 6 37 738 8 39 9 3a : 3b ; 3c < 3d = 3e > 3f ?40 @ 41 A 42 B 43 C 44 D 45 E 46 F 47 G48 H 49 I 4a J 4b K 4c L 4d M 4e N 4f O50 P 51 Q 52 R 53 S 54 T 55 U 56 V 57 W58 X 59 Y 5a Z 5b [ 5c \ 5d ] 5e ^ 5f _60 ` 61 a 62 b 63 c 64 d 65 e 66 f 67 g68 h 69 i 6a j 6b k 6c l 6d m 6e n 6f o70 p 71 q 72 r 73 s 74 t 75 u 76 v 77 w78 x 79 y 7a z 7b { 7c | 7d } 7e ~ 7f delThe decimal set:0 nul 1 soh 2 stx 3 etx 4 eot 5 enq 6 ack 7 bel8 bs 9 ht 10 nl 11 vt 12 np 13 cr 14 so 15 si16 dle 17 dc1 18 dc2 19 dc3 20 dc4 21 nak 22 syn 23 etb24 can 25 em 26 sub 27 esc 28 fs 29 gs 30 rs 31 us32 sp 33 ! 34 " 35 # 36 $ 37 % 38 & 39 '40 ( 41 ) 42 * 43 + 44 , 45 - 46 . 47 /48 0 49 1 50 2 51 3 52 4 53 5 54 6 55 756 8 57 9 58 : 59 ; 60 < 61 = 62 > 63 ?64 @ 65 A 66 B 67 C 68 D 69 E 70 F 71 G72 H 73 I 74 J 75 K 76 L 77 M 78 N 79 O80 P 81 Q 82 R 83 S 84 T 85 U 86 V 87 W88 X 89 Y 90 Z 91 [ 92 \ 93 ] 94 ^ 95 _96 ` 97 a 98 b 99 c 100 d 101 e 102 f 103 g104 h 105 i 106 j 107 k 108 l 109 m 110 n 111 o112 p 113 q 114 r 115 s 116 t 117 u 118 v 119 w120 x 121 y 122 z 123 { 124 | 125 } 126 ~ 127 delFILES/usr/share/misc/asciiHISTORYAn ascii manual page appeared in Version 7 AT&T UNIX.BSD June 5, 1993 BSD(END)2.1.4 表⽰字符串1.⼗进制数字‘y’的ascii码正好是0x3y2.strlen(str)函数不计算终⽌的空字符(ascii码为0x00)3.字符编码⽅式:(1)ASCII (American Standard Code for Information interchange)(2)Unicode (Unique Code)(3)UTF-8 / UTF-16 / UFT-32 (Unicode Transformation Format)2.1.5 表⽰代码2.1.6 布尔代数(Boolean Algebra)简介1.布尔运算&对|有分配律:a&(b|c) = (a&b)|(a&c)布尔运算|对&有分配律:a|(b&c) = (a|b)&(a|c)2.位向量:长度为w,由0和1组成的串应⽤:表⽰有限集合/压位运算(例:[01101010]表⽰集合{1,3,5,6}),位向量掩码/屏蔽信号3.布尔环(Boolean ring),类似于整环/整数环“加法”逆元:^类似于+; 每个整数x有加法逆元-x使得x+(-x)=0,类似地,每个布尔元素a都有“加法逆元”a使得a^a=0; 有趣的性质:(a^b)^a=b 1//这是⼀个不需要第三个量的交换函数,不过它并没有性能上的优势2void inplace_swap(int *x, int *y){//*x = a, *y = b3 *x = *x ^ *y;//*x = a^b, *y = b4 *y = *x ^ *y;//*x = a^b, *y = a5 *x = *x ^ *y;//*x = b, *y = a6 }2.1.7 C语⾔中的位级运算:&, |, ^, ~2.1.8 C语⾔中的逻辑运算: &&, ||, !2.1.9 C语⾔中的移位运算:>>, <<1.逻辑右移(⾼位补0,⽆符号数进⾏逻辑右移)算数右移(⾼位补符号位,有符号数进⾏算数右移)(1)初级运算符[]().->(2)单⽬运算符(3)算数运算符(4)移位运算符(5)关系运算符(6)位级运算符(7)逻辑运算符(8)赋值运算符2.2 整数表⽰2.2.1 整形数据类型2.2.2 ⽆符号数的编码(unsigned)2.2.3 补码编码(two's-complement)1.<limits.h>库:INT_MIN, INT_MAX, UINT_MAX<stdint.h>库:intN_t, UintN_t (t = 16,32,64等)(我在xcode上没有include这两个库也能直接使⽤INT_MIN、int32_t等)2.有符号数的表⽰⽅法(1)补码(two's-complement):最⾼位权重为-2^(w-1)(2)反码(ones' complement):最⾼位权重为-(2^(w-1)-1)(3)原码(sign-magnitude):最⾼位为1表⽰所有其他位权重为负注:(2)(3)中0的表⽰法不唯⼀,有+0和-0两种2.2.4 有符号数和⽆符号数之间的转换(可能)改变数值,但不改变位表⽰1.补码转换为⽆符号数(w位):TMin <= x < 0, T2U(x) = x + 2^w0 <= x <= TMax, T2U(x) = x2.⽆符号数转换为有符号数(w位):0 <= x <= TMax, U2T(x) = xTMax < x <= UMax, U2T(x) = x - 2^w2.2.5 C语⾔中的有符号数和⽆符号数1.数字常量默认为有符号数,加上后缀u或U可创建⽆符号数常量2.类型转换的⽅式:(1)显式:强制类型转换(2)隐式:不同类型变量间赋值3.%d有符号⼗进制,%u⽆符号⼗进制,%o⼋进制,%x⼗六进制4.C语⾔对于同时包含有符号数和⽆符号数的表达式,会隐式地将有符号数转换为⾮负的⽆符号数 1/*2这是⼀个测试函数3注:TMin写成-2147483647-1⽽⾮-21474836484是因为limits.h中定义INT_MIN=-INT_MAX-1,以规避某些奇怪的现象5*/6 #include <cstdio>7using namespace std;89int main(){10 printf("-1 < 0u = %d\n", -1 < 0u);11 printf(" -1 = 0x%x \n", -1);12 printf(" 0u = 0x%x\n\n", 0u);1314 printf("2147483547 > (int)2147483648u = %d\n", 2147483547 > (int)2147483648u);15 printf(" 2147483547 = 0x%x \n", 2147483547);16 printf(" (int)2147483648u = 0x%x\n\n", (int)2147483648u);1718 printf("-2147483647-1u < 2147483647 = %d\n", -2147483647-1u < 2147483647);19 printf(" -2147483647-1u = 0x%x \n", -2147483647-1u);20 printf(" 2147483647 = 0x%x\n\n", 2147483647);2122 printf("-2147483647-1u < -2147483647 = %d\n", -2147483647-1u < -2147483647);23 printf(" -2147483647-1u = 0x%x \n", -2147483647-1u);24 printf(" -2147483647 = 0x%x\n\n", -2147483647);25return0;26 }运⾏结果如下-1 < 0u = 0-1 = 0xffffffff0u = 0x02147483547 > (int)2147483648u = 12147483547 = 0x7fffff9b(int)2147483648u = 0x80000000-2147483647-1u < 2147483647 = 0-2147483647-1u = 0x800000002147483647 = 0x7fffffff-2147483647-1u < -2147483647 = 1-2147483647-1u = 0x80000000-2147483647 = 0x800000012.4 浮点数2.4.1 ⼆进制⼩数2.4.2 IEEE浮点表⽰1.表⽰形式:(1)符号(sign)s: 表⽰+-(2)尾数(significand)M:⼆进制⼩数,取值范围为[1,2)或[0,1)(3)阶码(exponent)E:对浮点数加权,权重为2的E次幂2.编码:s编码符号sign s,exp编码阶码exponent E,frac编码尾数significand M3.三种情况(1)规格化的(noemalized): exp!=00...0 && exp!=11 (1)i. 阶码 E = exp - bias, bias = 2^(k-1)-1, k=exp的位数ii. 尾数 M = 1.xx...x = 1.frac的位(隐含的以1开头的表⽰)(2)⾮规格化的(denormalized): exp == 00 0i. 阶码 E = 1 - bias, bias = 2^(k-1)-1, k=exp的位数ii. 尾数 M = 0.xx...x = 0.frac的位iii.注意:0.0有两种表⽰⽅法+0.0和-0.0,符号位分别为0或1,其他位全部为0(3)特殊值: exp == 11 (1)i. ⽆穷:frac = 00...0, s=0或1表⽰+∞或-∞,能够表⽰溢出的运算结果,如x/0 ii. Nan(not a number): frac != 00...0, 表⽰⾮实数的运算结果,如根号-1,∞-∞4.三种情况的数字分布⾮规格化数字的阶码定义为E=1-bias可以补偿⾮规格化的尾数没有隐含的开头1,有助于数字表⽰的平滑转变;否则,在绝对值最⼤的⾮规格化数字(其⼆进制表⽰为0 00...0 11...1)和绝对值最⼩的规格化数字(其⼆进制表⽰为0 00...01 00...0)之间将存在跳跃2.4.3 数字⽰例1. 处理正浮点数时,若按照⽆符号整数解释他们的⼆进制表⽰,则可以发现它们的⼤⼩顺序不变;负浮点数只需要倒序。
02 计算机内信息的数字化表示

示例: 示例:
(1011.1) 2 = 1×23+0×22 + 1×21 + 1 ×20 +1 × 2-1 +0× 1×
= 8 + 0 + 2 + 1 + 0.5 = (11.5)10
编码和数制
八与十六进制之间的转换
整数从右向左 小数从左向右
三位并一位
二进制
一位拆三位 四位并一位
八进制
二进制
一位拆四位
Word) 字(Word) 一条指令或一个数据信息,称为一个字。 字是计算机进行信息交换、处理、存储的 基本单元。计算机一次能处理的二进制数 计算机一次能处理的二进制数 字长 CPU中每个字所包含的二进制代码的位数, 称为字长。字长是衡量计算机性能的一个 重要指标。
四、常见名词
指令 指挥计算机执行某种基本操作的命令称为指 令。一条指令规定一种操作,由一系列有序 指令组成的集合称为程序。 容量 容量是衡量计算机存储能力常用的一个名词, 主要指存储器所能存储信息的字节数。常用 的容量单位有B、KB、MB、GB,它们之间 的关系是:1KB=1024B,1MB=1024KB, 1GB=1024MB。
十六进制
编码和数制
示例: 示例: 100 110 110 111 . 010 100
(4
6
6
7 . 2 4 )8
Hale Waihona Puke 0001 1011 0111.0100 ( 1 B 7 . 4 )16
三、计算机采用二进制的好处
1. 2. 3. 4.
技术上容易实现。 运算规则简单。 可以方便的进行逻辑运算。 与十进制之间关系简单,转换容易 实现。
二、进位计数制
C语言程序设计 第2章 数据类型

2.2常量和变量 变量名与变量值的关系:
2.2常量和变量
变量的使用:先定义后使用
变量定义的一般形式:
数据类型 变量名1,变量名2,…,变量名n;
2.2常量和变量
➢ 凡未被事先定义的,系统不把它认作变量名,这就 能保证程序中变量名使用的正确
例:varname,在使用的时候误写成vaname
➢ 在定义变量时要指定变量的类型,在编译时就能为 变量分配相应的存储单元
5
2.2常量和变量
甘草 三七 干姜 葛根
枸杞 人参 陈皮 地黄
山药 当归 谷芽 黄连
贴上标签 加以区分
用标识符给变量起名字
2.2常量和变量 变量命名规则
➢ 只能由字母(a~z,A~Z)、数字(0~9)和下划线(_)构 成
➢ 第一个字符不能为数字 ➢ 不能与关键字同名
例:a9,_a, A_num √ 9a, a*num,int ×
控制语句:控制语句用于控制程序的流程。 C语言提供三类控制语句: ➢ 选择语句 ➢ 循环语句 ➢ 转移语句。 控制语句会在第三章和第四章详细介绍。
2.7 表达式与语句
复合语句: 复合语句由一对大括号括起来的一 条或多条语句组成。 例:{
turnOn(0,3); turnOn(0,4); turnOn(0,5); turnOn(1,4); }
2.7 表达式与语句
表达式语句:表达式末尾加上“;”就构成一条 表达式语句。 例:
s = 3.14 * r * r; 就是一条赋值表达式语句。表达式语句最后的 分号是语句中必不可少的一部分。
2.7 表达式与语句
函数调用语句:函数调用语句由函数调用加分 号构成。 例:
turnOn(1,1);
第二章数据在计算机中的表示综合练习题参考答案

第二章数据在计算机中的表示综合练习题参考答案一、1 、计算机中的数有定点表示法和浮点表示法两种表示方法。
2 、原码的编码规则是:最高位代表符号,其余各位是该数的尾数本身。
3 、补码的编码规则是:正数的补码与其原码相同,负数的补码是将二进制位按位取反后在最低位加 1 。
4 、反码的编码规则是:正数的反码与其原码相同,负数的反码是将二进制位按位取反。
5 、一种记数制允许选用基本数字符号的个数称为基数。
6 、整数部分个位位置的序是 0 。
7 、通常把表示信息的数字符号称为数码。
8 、八进制数的基数是 8 。
9 、 7402.45Q 的十六进制数是 F02.94H 。
10 、数在计算机中的二进制表示形式称为二进制数。
11 、在小型或微型计算机中,最普遍采用的字母与字符编码是 ASCII 码。
12 、计算机一般都采用二进制数进行运算、存储和传送,其理由是运算规则简单,可以节省设备。
13 、十进制整数转换成二进制的方法是除 2 取余法,小数转换成二进制的方法是乘 2 取整法。
14 、二进制的运算规则有加法规则、减法规则、乘法规则和除法规则。
15 、目前常见的机器编码有原码、反码和补码。
16 、对 -0 和 +0 有不同表示方法的机器码是原码和码。
17 、 8 位寄存器中存放二进制整数,内容全为 1 ,当它为原码、补码和反码时所对应的十进制真值分别是 -127 、 -1 、 -0 。
18 、在二进制浮点数表示方法中,阶码的位数越多则数的表示范围越大,尾数的位数越多则数的精度越高。
19 、对于定点整数, 8 位原码(含 1 位符号位)可表示的最小整数为 -127 ,最大整数为 127 。
20 、采用 BCD 码, 1 位十进制数要用 4 位二进制数表示, 1 个字节可存放 2 个 BCD 码。
21 、对于定点小数, 8 位补码可表示的最小的数为 -1 ,最大的数为 1-27 。
22 、在原码、补码、反码中,补码的表示范围最大。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EX=+7=(+00111)2,MX=-0. 111101101 [EX]补=000111, [ MX ]补=1. 000010011 则:[X]浮= 1 000111 000010011 (2)Y=(34/128 ) 10 =(0.010001)2 =0. 10001×2-1 EY=-00001,MY=0. 100010000 [EY]补=111111, [ MY ]补=0. 100010000 则:[Y]浮= 0 111111 100010000
课堂练习
1、已知[X]补=1.1010,求X= ? 1.0110 [X]原= ? [X]反= ? 1.1001 [X]移= ? 0.1010 2、求以下各机器数的十进制真值:
-0.0110
[X]原 = 1,0000000 ,则X = ? [X]补 = 1,0000000 ,则X = ? [X]反 = 1,0000000 ,则X = ? [X]移 = 1,0000000 ,则X = ? [X]原 = 1,1101 ,则X = ? [X]补 = 1,1101 ,则X = ? [X]反 = 1,1101 ,则X = ? [X]移 = 1,1101 ,则X = ? [X]原 = 0,1000 ,则X = ? [X]补 = 1,1000 ,则X = ? [X]反 = 0,1000 ,则X = ? [X]移 =0,1000 ,则X = ?
X= (-1)s*1.M*2E-127 =+(1.011011)* 23 =+1011.011
=11.375
例2:将数(20.59375)10转换成754标准的32位浮点数二进 制存储格式。 解: 首先转换为二进制数 20.59375=10100.10011 移动小数点,使其在1,2位之间 10100.10011=1.010010011 * 24 , e=4 于是:S=0, E=4+127=131,M=010010011 于是得到32位浮点数的二进制存储格式为: 0 100 0001 1010 0100 1100 0000 0000 0000 =(41A4C000)16
数值范围:一种数据类型所能表示的最大值和最 小值 数据精度:实数所能表示的有效数字位数。
2、浮点机器数的规格化表示
规格化方法:调整阶码使尾数满足下列关系:
尾数为原码表示时,无论正பைடு நூலகம்应满足1/2<|M |<1
即:小数点后的第一位数一定要为1。
正数的尾数应为0.1x….x
负数的尾数应为1.1x….x 尾数用补码表示时,小数最高位应与数符符号位相反。 正数应满足 1/2≦M<1,即 0.1x….x 负数应满足 -1/2 > M≥ -1,即 1.0x….x(M=-1/2除外)
定点数的表示范围
一个字长为32位的定点整数机器,最高位为符 号位,机器中的数采用补码表示形式,则该机 器所能表示的数的范围如下:
-231
0
231-1
数轴
浮点数的表示范围
32位字长的机器中,数采用浮点表示,符号位占1位, 尾数位占23位,阶符占1位,阶码占7位。阶码用移 码表示,尾数用原码表示,采用规格化浮点数表示形 式,则其表数范围:
5 机器零
定义:当一个浮点数的尾数为0,不论阶码为何 值,或者当阶码的值比能表示的最小值还小时, 不论尾数为何值,都把浮点数看作零。
例:阶码,尾数都用补码表示时: 1000000000000000000000000000000 当采用移码表示时: 0000000000000000000000000000000 与定点数判别“0”一致。
求: [X/2]补,[X/4]补 ,[Y/2]补,[Y/4]补
[X]补 =0.1011
[Y]补=1.1011
[Y/2]补=1.11011
[X/2]补=0.01011
[X/4]补=0.001011
[Y/4]补=1.111011
四、浮点机器数的表示方法
十进制数的科学表示法(scientific notation) 例如: 156,000,000=1.56*108 -0.000,000,28=-0.28*10-6
二进制的科学记数表示法,即:小数点的 位置根据需要而浮动,这就是浮点数。
1、浮点机器数的格式
1 、浮点数的一般形式
阶符Ef 阶码E1..m 尾符Mf 尾数M1..n N=+/-RE x M 其中,N:要表示的浮点数的真值; R(Radix):基数为2的整数次幂,常取2; M(Mantissa):尾数,一般为定点小数; E(Exponent):阶码,一般为定点整数。 Mf :表示浮点数的正负
X=-0 X =(- 128)10 X = (-127)10 X=0 X = - 1101B X = - 0011B X = - 0010 B X = +1101B X = +1000 B X = - 1000 B X = +1000B X = -1000 B
例:已知:X=0.1011 Y=-0.0101
例1:若浮点数X的754标准存储格式(41360000)16 ,求其 浮点数的十进制数值。 解:将16进制数展开后,可得到二进制格式: 0 100 0001 0011 0110 0000 0000 0000 0000 e=E-127=100 0001 0-01111111=00000011=3 包括一位隐含位的尾数 1.M=1. 011 0110 0000 0000 0000 0000 = 1.011011 于是:
1、浮点机器数的格式
可见,一个浮点数在机器中是用两个定点数来
表示的。 例:[ N ]补=1101;1.110101
N=-2(-0011)*0.001011 即:N=-0.000001011
2、浮点机器数的规格化表示
浮点数可以表示成多种形式:
0.11 026 => 1.10 25 => 0.000110 29 ……
例:
32位浮点二进制数,8位为补码表示的阶 码,24位(含1位符号位)为补码表示的规格 化尾数,试指出它所表示的最大正数与最小正 数数据格式。 最大正数:0111 1111 0.111…11 最小正数:1000 0000 0.100…00
3 机器数的移(增)码表示法
定义:设定点整数移码序列Xn Xn-1„„ X0,则, [X]移 = 2n + X 2n>X≥-2n 即无论X是正还是负,一律加上2n,称2n为基数 移码就是在真值X上加一个常数(偏置值),相当于X在数 轴上向正方向平移了一段距离,这就是“移码”一词的 来由。 [X]移=偏置值+X 传统上,对于字长8位的定点整数,偏置值为27。 在IEEE754中,偏置值为(27-1)
IEEE 754格式参数
参数 字宽(位数) 指数宽(位数) 指数偏移 最大指数 最小指数 数的范围 有效尾数 指数数目 分数数目 值的数目 单精度 32 8 127 127 -126 10-38,10+38 23 254 223 1.98*231 双精度 64 11 1023 1023 -1022 10-308,10+308 52 2046 252 1.99*263
(用16进制表示此结果则为:9B4H)
练习:一浮点数的阶码为6位(包括一位 阶符),尾数为10位(包括一位数符), 阶码与尾数均采用补码表示,阶码的底 为2。写出X与Y的规格化浮点数。 (1)X=-123.25 (2)Y=34/128 (1)X=(-123.25)10 =(-1111011.01)2 =-0. 111101101×2+7
根据IEEE 754 国际标准,常用的浮点数格式有3种,阶码的底隐含 为2。 短实数又称为单精度浮点数,长实数又称为双精度浮点数,临时实 数主要用于进行浮点数运算时保存临时的计算结果。
数据类型 短实数 长实数
总位数 32 64
尾数位数 24 53
阶码位数 8 11
临时实数
80
65
15
4 IEEE 754浮点数标准
为了简化浮点数的操作,需要对其进行规 格化,规格化后的浮点数具有下列形式:
±0.1bbb…bb*R±E
2、浮点机器数的规格化表示
若上述浮点数N的尾数M在如下范围内1/R ≤ |M| < 1(1/2 ≤|M| < 1) 则N叫做规格化的浮点数,一般机 器中以此形式存储、运算。 在字长一定的情况下,规格化的浮点数精度最 高。
3 机器数的移(增)码表示法
例1:X=1011101 [X]移=27+X=10000000+1011101=11011101 [X]补=01011101 例2:X=-1011101 [X]移= 27 +X=10000000-1011101=00100011 [X]补=10100011
4 IEEE 754浮点数标准
练习: 将X=-19/64表示成浮点规格化数(阶码3位,阶 符1位,尾数7位,尾符1位),阶码采用原码,尾数 用规格化,用补码的形式表示。 定点数:[X]补=1.1011010; X=-19/64=(-10011*2-110)2=-0.010011=2-01*-0.10011 E=-01,E 原=1001; M=-0.1001100,M补=1.0110100 浮点数: 1,001; 1.0110100
开发该标准是为了程序从一个处理器移植到另一个处理器。 IEEE标准定义了32位的单精度和64位的双精度两种格式。它们的 指数段分别为8位和11位,隐含的基值是2。
0 1 89 阶码 尾数 (23) 11 12 11位阶码 52位尾数 63 31
数符号位
01
4 IEEE 754浮点数标准