版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章计算机运算基础2.1进位计数制2.2数制之间的转换2.3二进制编码2.4带符号数的机内表示2.5二进制运算12.0信息就是位(bit)+上下文(context)系统中所有信息,包括磁盘文件、存储器中的程序、存储器中存放的用户数据以及网络上传输的数据,都是由一串位表示的。区分不同数据对象的唯一方法是读这些数据对象时的上下文。你能否编写C语言程序输出不同数据类型对应的位串(可用十六进制表示)?强制类型转换的本质是什么?22.1进位计数制按进位的方法进行计数,称为进位计数制.数据无论使用哪种进位制都涉及到基数(Radix)与各数位的“权”(Weight)。基数:该进位制中允许的基本数码的个数权:以基数为底,数码所在位置序号的指数次幂例:543.2D=5×102+4×101+3×100+2×10-13二进制的基数为2,有两个记数符号0和1例如:10110.11B=
1×24+0×23+1×22+1×21+0×20+1×2-1+1×2-2=22.75D1、二进制(BinaryNotation)42、八进制(OctalNotation)八进制的基数为8,有8个记数符号0到7例如:35.71Q=
3×81+5×80+7×8-1+1×8-2=
D53、十六进制(HexadecimalNotation)十六进制的基数为16,可用数字符为0到9十个数字符,另外从A到F表示10到15这6个数值,十六进制实际上是二进制的简化形式。例如:
4CF1.0DEH=
4×163+12×162+15×161+1×160+0×16-1+13×16-2+15×16-3=
D62.2数制之间的转换十进制非十进制非十进制十进制二进制八、十六进制八、十六进制二进制十进制与非十进制间的转换非十进制间的转换7十进制与非十进制间的转换(十→非十)
整数部分的转换除基取余法:用目标数制的基数(R=2,8,16)去除十进制数,第一次相除所得余数为目的数的最低位K0,将所得商再除以基数,反复执行上述过程,直到商为“0”,所得余数为目的数的最高位Kn-1。例:(81)10=(?)2得:(81)10=(1010001)28140201052022222221K00K10K20K31K40K51K618十进制与非十进制间的转换(十→非十)
小数部分的转换乘基取整法:小数乘以目标数制的基数(R=2,8,16),第一次相乘结果的整数部分为目的数的最高位K-1,将其小数部分再乘基数依次记下整数部分,反复进行下去,直到小数部分为“0”,或满足要求的精度为止(即根据设备字长限制,取有限位的近似值)。0.652K-110.32K-200.62K-310.22K-400.42K-500.8例:
(0.65)10=(?)2
要求精度为小数五位。由此得:(0.65)10=(0.10100)29十进制与非十进制间的转换(非十→十)方法:将相应进制的数按权展成多项式,按十进制求和(0F8C.B)16=
F×162+8×161+C×160+B×16-1=
3840+128+12+0.6875=(3980.6875)10例:10非十进制间的转换(二↔十六)从小数点开始,将二进制数的整数和小数部分每四位分为一组,不足四位的分别在整数的最高位前和小数的最低位后加“0”补足,然后每组用等值的十六进制码替代,即得目的数。例:
111011.10101B=?H
111011.10101B=3B.A8H111011.10101小数点为界00000B3A8注意:如果十六进制数最高位为A-F,前面加0,如0A3.45H11非十进制间的转换(二↔八)从小数点开始,将二进制数的整数和小数部分每三位分为一组,不足三位的分别在整数的最高位前和小数的最低位后加“0”补足,然后每组用等值的八进制码替代,即得目的数。例:11010111.0100111B=?Q
11010111.0100111B=327.234Q11010111.0100111小数点为界000723234122.3二进制编码二进制编码的十进制数(BCD,BinarycodedDecimal)字符编码13BCD码8421码14字符编码ASCII码Unicode编码(UCS2)UTF-8GB-231215ASCII码表16UnicodeUnicode是一个16位的字符集,它包括了几乎所有常见的信息交换用的字符(英、法、德、中(简、繁)、朝鲜、日等),其64K的编码空间有大约1/3尚未分配。“A”的Unicode是4100“爱”的Unicode是3172“愛”的Unicode是1B61172.4带符号数的机内表示机器数与真值原码表示法反码表示法补码表示法过余码表示法18机器数与真值计算机在处理实际问题时遇到的带符数,数据的“+”号和“-”号在计算机内也是用二进制位表示,“0”表示正,“1”表示负。例如:N1=+1011011N2=-1011011机内表示:N1=01011011N2=11011011定义:将已经数值化了的带符号数称为机器数,而把原来的数称为机器数的真值。注:机器数与机器相关,故有位数限制19原码表示法数据的最高位用来表示符号,称为符号位,符号位为0表示正数,符号位为1表示负数,其余位为数值位,用数据的绝对值表示。例:(1)X=+85,[X]原=01010101(2)X=-85,[X]原=11010101(3)对于零:0有两种表示形式
[+0]原=00000000[-0]原=1000000020反码表示法在反码表示中,仍用0表示正数,1表示负数。对于正数,其反码表示与其原码表示完全相同;对于负数,符号位为1,其余用数值的反码表示。例:(1)X=+85,[X]反=01010101(2)X=-85,[X]反=10101010(3)对于零:0有两种表示形式
[+0]反=00000000[-0]反=1111111121补码表示法在补码表示中,仍用0表示正数,1表示负数。对于正数,其补码表示与其原码表示完全相同;对于负数,符号位为1,其余各位按位取反加1。例:(1)X=+85,[X]补=01010101(2)X=-85,[X]补=10101011(3)对于零:0只有一种表示形式
[0]补=0000000022过余码表示法在过余码表示中,是将数据的真值直接与一个过余量相加,结果就是其过余码表示。过余量通常为64、128、1024等。举例:(1)X=+85,[X]过余128=128+85=11010101(2)X=-85,[X]过余128=128-85=00101011(3)对于零:只有一种表示形式
[+0]过余128=128+0=10000000232.5二进制运算补码加减运算逻辑运算24两个正数相加:
4500101101(45的补码)
+22+00010110(22的补码)
6701000011(67的补码)补码加减运算25补码加减运算正数加负数(负数绝对值小):
4500101101(45的补码)+(-22)+11101010(-22的补码)
2300010111(23的补码)26负数加正数(负数绝对值大):(-45)11010011(-45的补码)
+22+00010110(22的补码)
-2311101001(-23的补码)补码加减运算27两个负数相加:(-45)11010011(-45的补码)(-22)+11101010(-22的补码)(-67)10111101(-67的补码)补码加减运算28结论:用补码表示的数据进行加减运算时可以不考虑符号位,直接运算,即与不带符号的数据的运算完全相同。该结论是否完全正确呢?请看下面的例子:29两个正数相加:
12601111110(126的补码)
+4+00000100(4的补码)
1301000
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论