版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1.2运算基础二、二进制的运算和计算机中的四则运算一、各种进制数的表示和它们之间的转换三、各种数制的编码、字符编码、BCD码、
ASCII码、汉字编码四、逻辑电路和逻辑运算计算机中的各种数制在计算机内部,信息广泛采用二进制形式表示,有时还会使用十进制、八进制、十六进制。2进制,用两个阿拉伯数字:0、1;8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;10进制,用十个阿拉伯数字:0、1、2、3、4、5、6、7、8、9;16进制,用十六个阿拉伯数字……等等,阿拉伯人或说是印度人,只发明了10个数字啊?16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这五个字母来分别表示10,11,12,13,14,15。字母不区分大小写。对任意进位制数都可以写成按权展开的多项式的和的形式:十进制使用广泛,它主要用在计算机外部。特点:一是十进制由十个不同的数符组成:0、1、2、3、4、5、6、7、8、9,即基数为“10”;二是十进制遵循每相邻两位“逢十进一”的原则。二进制是用于计算机内部描述各种信息的一种数制。特点:一是二进制由“0”和“1”两个符号构成,即基数为2;二是每相邻两位遵循“逢二进一”的原则。K=Kn-1×Rn-1+Kn-2×Rn-2+……+K1×R1+K0×R0+K-1×R-1+K-2×R-2+……=Ki×Ri式中:i--数位;m,n--正整数;
R--基数;Ki--第i位数码。为什么需要八进制和十六进制?
编程中,我们常用的还是10进制……必竟C/C++是高级语言。比如:inta=100,b=99;
不过,由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决问题。但,二进制数太长了。比如int类型占用4个字节,32位。比如100,用int类型的二进制数表达将是:000000000000000001100100面对这么长的数进行思考或操作,没有人会喜欢。用16进制或8进制可以解决这个问题。因为,进制越大,数的表达长度也就越短。不过,为什么偏偏是16或8进制,而不其它的,诸如9或20进制呢?
2、8、16,分别是2的1次方,3次方,4次方。这一点使得三种进制之间可以非常直接地互相转换。8进制或16进制缩短了二进制数,但保持了二进制数的表达特点。1)二进制数用B(Binary),八进制数用O(Octonary),O也可用Q表示,十进制数用D(decimal),十六进制数用H(Hexadecimal)表示.:101B,123Q,789,10CEH分别表示二进制、八进制、十进制和十六进制数2)给数加括号并加数字下标如(1001)2,,(2357)8,(8790)10,(1AFF)16分别表示二进制、八进制、十进制和十六进制。书写规则常用的书写方法有两种:应该还有其他写法,如c++中的表示等。数制之间的转换下面是竖式:将01100100换算成十进制第0位0*20
=
0第1位0*21
=
0第2位1*22
=
4第3位0*23
=
0第4位0*24
=
0第5位1*25
=32第6位1*26
=64第7位0*27
=
0
+---------------------------
100
2进制数转换为10进制数用横式计算为:0*20+0*21+1*22+1*23+0*24+1*25+1*26+0*27=100
0乘以多少都是0,所以我们也可以直接跳过值为0的位:1*22+1*23+
1*25+1*26=100二进制数00101010十进制数4225+23+21=42转换方法:e.g110进制数转换为2进制数给你一个十进制,比如:6,如果将它转换成二进制数呢?10进制数转换成二进制数,这是一个连续除2的过程:把要转换的数,除以2,得到商和余数,将商继续除以2,直到商为0。最后将所有余数倒序排列,得到数就是转换结果。十进制数58二进制数00111010转换方法:
2|58……02|1……12|29……12|14……02|7……12|3……102|1……1e.g2取余数对应二进制位数223……余1……K0最低位211……余1……K125……余1……K222……余0……K321……余1……K4最高位
即:23D=10111B总结:十进制整数转换成二进制数用“除2取余倒读法”转换成其它进制数就可概括为“除R取余倒读法”。例:十进制数23转换成二进制数对应二进制位数取整数K-1最高位1K-21K-30K-4最低位10.8125×
21.62500.6250×
21.25000.2500×
20.50000.5000×
21.0000即:0.8125D=0.1101B总结:十进制数转换成其它进制数方法“乘R取整顺读”例:将十进制数0.8125转换成对应的二进制数十六进制数转换成十进制数十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……所以,在第N(N从0开始)位上,如果是数X(X大于等于0,并且X小于等于15,即:F)表示的大小为X*16的N次方。假设有一个十六进数2AF5,那么如何换算成10进制呢?用竖式计算:2AF5换算成10进制:
第0位:
5*160=5第1位:
F*161=240第2位:
A*162=2560第3位:
2*163=8192
+-------------------------------------
10997
直接计算就是:5*160
+F*161+A*162+2*163=10997(别忘了,在上面的计算中,A表示10,而F表示15)现在可以看出,所有进制换算成10进制,关键在于各自的权值不同假设有人问你,十进数1234为什么是一千二百三十四?你尽可以给他这么一个算式:1234=1*103+2*102+3*101+4*100三位组合法:把二进制数以小数点为中心,分别向左、右每三位分为一组,不够补零;然后,每组用等值的八进制数码表示。例:将二进制数101.1011转换成等值八进制数.(101.1011)2=101.101
100=(5.54)8分解三位法:把八进数的各位依次用对应的三位二进制数码表示。例:将八进制数12.56转换成等值二进制数(12.56)8=001010.101110=(1010.10111)2二进制数和八进制数之间的转换与二进制转换成八进制类似用“四位组合法和分解四位法”例:将二进制数101110转换成等值十六进制数。(101110)2=0010
1110=(2E)16将十六进制数5.B8转换成等值二进制数分别转换成等值(5.B8)16=0101.1011
1000=(101.10111)2二进数与十六进制数之间的转换二进制十六进制十进制BCD码00000000000001110001001022001000113300110100440100010155010101106601100111770111100088100010019910011010A101011B111100C121101D131110E141111F15数码对照表机器数:“数”以某种方式存储在计算机中,一般称为机器数。机器数的范围一个计算机的字长为8位或16位时,它的无符号整数的最大值分别是(11111111)2=(255)102=(65535)102.机器数的符号无符号数:不考虑正负的数,相反称为有符号数有符号数:计算机中有符号数的符号被数字化了;一般最高位为0表示正号,为1表示负号常用的编码方式有三种:原码、反码、补码。数据的表示
无符号数与有符号数的区别仅在于,无符号数没有符号位,全部有效位均用来表示数的大小。在计算机中,无符号数常用来表示地址。1.无符号数(1)原码符号位用0表示正,用1表示负,数值部分不变。原码和真值的关系如下式所示:2.有符号数例如:求X=+105的原码(X)原=01101001
求X=-105的原码(X)原=11101001
原码表示简单直观,但0的表示不唯一,加减运算复杂,如果两个异号数相加或两个同号数相减就要做减法。 (2)反码正数的反码与原码相同,负数的反码是符号位用1表示,数值位按位取反。原码和真值的关系如下式所示:例如:X=-4,(X)原=10000100,(X)反=11111011,
(X)反=10010100,则其原码为11101011,为-107
反码的缺点与原码类似,多用在求反逻辑运算中。(3)补码正数的补码与原码相同;
负数补码为其反码加1;
0无正负之分;
n位二进制数补码的表示范围为+(2n-1-1)~-2n-1
补码和真值的关系如下:例如:X=-4,(X)原=10000100,(X)补=11111100
补码运算时可以将符号位参与运算,可以用加法代替减法运算,提高了运算速度。计算机中的有符号二进制数据默认为补码表示。X为正数时有:(X)原=(X)反=(X)补X为负数时有:(X)补=(X)反+1,((X)补)补=(X)原
((X)反)反=(X)原
补码的求法1)根据定义求:(X)补=2n+X如X=-,n=8,则(X)补=28+(-)=100000000-=,有减法运算不方便。2)利用原码求:一个负数的补码等于其原码除符号位以外的各位按位取反,再在最低位加1。如X=-,(X)原=,则(X)补=+1=3)简便的求补:从原码的最低位起,到出现第一个1以前(包括第一个1)的数字不变,以后逐位取反,但符号位不变。如X=-1010111,(X)原=,则(X)补=X=-,则(X)原=11110000,则(X)补=3.机器数中小数点位置(1)定点数:小数点位置固定不变。浮点数:小数点位置可以浮动。定点数的表示方法纯整数:小数点在数的最右方。纯小数:小数点在数的符号位之后。纯整数和纯小数都可以用原码、反码、补码来表示。如:87.37=0.8737×102同样(110.11)2=(0.11011×23)2
这就是浮点数表示法一个二进制数N
可表示为:N
=±2±P×S(N,P,S均为二进制数)S称为尾数,即全部的有效数字(一般数值小于1),2前面的±号是尾数的符号,P称为阶码(一般为整数)即指明小数点的实际位置,2右上方的±号是阶码的符号。浮点数在机器中的编码分成两部分,排列如下:阶符阶码P尾符尾码S(2)浮点数的表示方法Pentium将阶码以一种偏置形式存放于格式之中,即将真阶码加上一个常数偏置值才是格式阶码,以保证偏置后的格式阶码恒为正数。单精度的阶码偏置值为+127,双精度的阶码偏置值为+1023,扩展精度的阶码偏置值为+16383。一个浮点数数的真阶码要通过它的格式阶码减去偏置值而得到。Pentium微处理器支持的浮点格式现在想知道,-5在计算机中如何表示?在计算机中,负数以其正值的补码形式表达。原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。比如0000000000是5的原码。反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。取反操作指:原为1,得0;原为0,得1。(1变0;0变1)比如:将0000000000每一位取反,得11111111111111111111111111111010。称:11111111111111111111111111111010是0000000000的反码。反码是相互的,所以也可称:11111111111111111111111111111010和0000000000互为反码。现在想知道,-5在计算机中如何表示?(续)补码:反码加1称为补码。也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。比如:0000000000的反码是:11111111111111111111111111111010。那么,补码为:11111111111111111111111111111010+1=11111111111111111111111111111011所以,-5在计算机中表达为:11111111111111111111111111111011。转换为十六进制:0xFFFFFFFB(在c中)或0FFFFFFFBH(在汇编中)。BCD(BinaryCodeDecimal)码:把每1位十进制数用4位二进制编码表示的数字编码。它的全名为十进制数的二进制编码(二-十进制编码)8421BCD码:每个十进制位用4位二进制数表示,而4位二进制数的位权分别为8、4、2、1,故命名之。十进制数8421BCD码十进制数8421BCD码000008100010001910012001010000100003001111000100014010012000100105010113000100116011014000101007011115000101014.数字编码8421BCD编码表例:(36.97)10=(00110110.10010111)BCD(100100110001.01000101)BCD=(931.45)10BCD码压缩型BCD码用4位二进制数表示1位十进制数非压缩型BCD码用8位二进制数表示1位十进制数1).ASCII编码:是由美国国家标准委员会制定的一种包括数字、字母、通用符号在内的字符编码集。ASCII码是一种7位二进制编码,能表示27=128个国际上最通用的西文字符。5.字符型数据的表示ASCII编码字符集包括4类常用的字符。(1)数字0~9对应的ASCII码值分别为0110001B~0111001B用十六进制数表示为31H~39H(2)字母包括26个大写英文字母和26个小写英文字母。字母A~Z的ASCII码值为41H~5AH,字母a~z的ASCII码值为61H~7AH。可以看出:对应的大、小写字母的ASCII码值相差20H。(3)通用符号如:+、-、=、*、/、,等共32个。(4)控制字符包括空格SP(20H)、回车CR(0DH)等共34个。注:ASCII码是一种7位编码,但它存放时必须占全一字字节,也即占用8位,一般最高位置0,其余7位是ASCII值。ASCII码表规律:小写字母大于大写字母,字母大于数字,所有的字符都大于空格,空格大于所有的控制字符。2).汉字编码汉字与英文差别很大:象形字、数目多、形和划差异大计算机常用键盘以拼音文字为主解决录入问题:与拼音键盘兼容--外码(音、形、划)在计算机中表示汉字需安排一个确定的编码且与ascii易于区分:GB2312-80,简国标码,再到机内码。二进制的运算和计算机中的四则运算1.算术运算 算术运算是指利用+、-、×、÷、()等符号连接二进制数完成的运算。(自然运算规则与十进制同)
计算机中完成二进制的四则运算 完成二进制的四则运算最终都是进行加法运算。 加法:……;乘法:部分积右移加被乘数或0
减法:加补码;除法:部分余数左移加除数补码或01)二进制的加减运算两个1位二进制数的加、减运算规则加法规则:减法规则:
0+0=00–0=00+1=11–1=1(借位1)
1+0=11–0=11+1=0(进位1)1–1=0多位二进制数加、减运算法则:逢二进一、借一作二例:求11000011B+100101B=?求11000011B-100101B=?
11000011B11000011B+100101B-100101B11101000B10011110B参见p.7二进制的补码运算规则:[X+Y]
补=[X]补+[Y]补
[X-Y]补=[X]补-[Y]补例:[32+25]补
=[32]补+[25]补=00100000+00111001=[57]补
[32-25]补
=[32]补-[25]补=00100000-=00100000+11100111=(1)00000111=[7]补2)二进制的补码运算
分析:两数相加时,只有当
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版节能环保设施运营管理合同范本3篇
- 二零二五年汽车租赁公司兼职司机合同3篇
- 二零二五版家居用品寄售代理合同范本3篇
- 二零二五版草原生态补偿机制承包合同3篇
- 二零二五版插画师合作合同范本-漫画创作合作与版权归属协议3篇
- 二零二五版建筑工程施工企业施工许可证注销合同3篇
- 二零二五版安徽农民工就业跟踪服务合同范本3篇
- 2025版块石石材矿山投资合作合同3篇
- 基于2025年度行业标准的招投标实习合同3篇
- 二零二五年金融创新抵押借款合同范本分享3篇
- 蒋诗萌小品《谁杀死了周日》台词完整版
- TB 10010-2008 铁路给水排水设计规范
- 黑色素的合成与美白产品的研究进展
- 建筑史智慧树知到期末考试答案2024年
- 金蓉颗粒-临床用药解读
- 社区健康服务与管理教案
- 2023-2024年家政服务员职业技能培训考试题库(含答案)
- 2023年(中级)电工职业技能鉴定考试题库(必刷500题)
- 藏历新年文化活动的工作方案
- 果酒酿造完整
- 第4章-理想气体的热力过程
评论
0/150
提交评论