ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:33.53KB ,
资源ID:4326349      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4326349.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(进制的转换原码反码补码.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

进制的转换原码反码补码.docx

1、进制的转换原码反码补码进制的转换 原码、反码、补码科名片 英文名称:Hex number system,是计算机中数据的一种表示方法。同我们日常中的十进制表示法不一样。它由0-9,A-F组成,字母不区分大小写。与10进制的对应关系是:0-9对应0-9;A-F对应10-15;N进制的数可以用0-(N-1)的数表示超过9的用字母A-F。 目录 举例说明 转换 表达方法 各码转换 变量 总结 标准表示 展开 举例说明 转换 表达方法 各码转换 变量 总结 标准表示 展开 编辑本段举例说明 10进制的32表示成16进制就是:20 16进制的20表示成10进制就是:2161+0160=32 编程中,我们

2、常用的还是10进制.毕竟C/C+是高级语言。 比如: int a = 100,b = 99; 不过,由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决 问题。但二进制数太长了。比如int 类型占用4个字节,32位。比如100,用int类型的二进制数表达将是: 0000 0000 0000 0000 0110 0100 面对这么长的数进行思考或操作,没有人会喜欢。因此,C,C+ 没有提供在代码直接写二进制数的方法。用16进制或8进制可以解决这个问题。因为,进制越大,数的表达长度也就越短。不过,为什么偏偏是16或8进制,而不其它的,诸如9或20进制呢,2、8、

3、16,分别是2的1次方、3次方、4次方。这一点使得三种进制之间可以非常直接地互相转换。8进制或16进制缩短了二进制数,但保持了二进制数的表达特点。在下面的关于进制转换的课程中,你可以发现这一点。 编辑本段转换 二进制转换十进制 二进制数第0位的权值是2的0次方,第1位的权值是2的1次方 所以,设有一个二进制数:101100100,转换为10进制为:356 用横式计算 0 X20 + 0X 21 + 1X 22 + 0X23 + 0X24 + 1 X25 + 1 X26 + 0 X 27 + 1X 28 = 356 0乘以多少都是0,所以我们也可以直接跳过值为0的位: 1X 22 + 1 X25

4、 + 1X 26 + 1X 28 = 356 4 + 32 + 64 + 256 =356 八进制转换十进制 八进制就是逢8进1。 八进制数采用 0,7这八数来表达一个数。 八进制数第0位的权值为8的0次方,第1位权值为8的1次方,第2位权值为8的2次方 所以,设有一个八进制数:1507,转换为十进制为:839,具体方法如下: 可以用横式直接计算: 7 * 80 + 0 * 81 + 5 * 82 + 1 * 83 = 839 也可以用竖式表示 第0位 7 * 80 = 7 第1位 0 * 81 = 0 第2位 5 * 82 = 320 第3位 1 * 83 = 512 十六进制转换十进制 1

5、6进制就是逢16进1,但我们只有09这十个数字,所以我们用A,B,C,D,E,F这六个字母来分别表示10,11,12,13,14,15。字母不区分大小写。 十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方 所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。 假设有一个十六进数 2AF5 直接计算就是: 5 * 160 + F * 161 + A * 162 + 2 * 163 = 10997 也可以用竖式表示: 第0位: 5 * 160 = 5 第1位: F * 16

6、1 = 240 第2位: A * 162 = 2560 第3位: 2 * 163 = 8192 - 10997 现在可以看出,所有进制换算成10进制,关键在于各自的权值不同。 假设有人问你,十进数 1234 为什么是 一千二百三十四,你尽可以给他这么一个算式: 1234 = 1 * 103 + 2 * 102 + 3 * 101 + 4 * 100 十六进制互相转换 首先我们来看一个二进制数:1111,它是多少呢, 你可能还要这样计算:1 * 20 + 1 * 21 + 1 * 22 + 1 * 23 = 1 * 1 + 1 * 2 + 1 * 4 + 1 * 8 = 15。 然而,由于111

7、1才4位,所以我们必须直接记住它每一位的权值,并且是从高位往低位记,:8、4、2、1。即,最高位的权值为23 = 8,然后依次是 22 = 4,21=2, 20 = 1。 记住8421,对于任意一个4位的二进制数,我们都可以很快算出它对应的10进制值。 下面列出四位二进制数 xxxx 所有可能的值(中间略过部分) 仅4位的2进制数 快速计算方法 十进制值 十六进制 1111 = 8 + 4 + 2 + 1 = 15 =F 1110 = 8 + 4 + 2 + 0 = 14= E 1101 = 8 + 4 + 0 + 1 = 13= D 1100 = 8 + 4 + 0 + 0 = 12 =C

8、1011 = 8 + 0 + 2 + 1 = 11= B 1010 = 8 + 0 + 2 + 0 = 10 =A 1001 = 8 + 0 + 0 + 1 =9 =9 . 0001 = 0 + 0 + 0 + 1 = 1= 1 0000 = 0 + 0 + 0 + 0 = 0= 0 二进制数要转换为十六进制,就是以4位一段,分别转换为十六进制。 如(上行为二制数,下面为对应的十六进制): 1111 1101 , 1010 0101 , 1001 1011 F D , A 5 , 9 B 反过来,当我们看到 FD时,如何迅速将它转换为二进制数呢, 先转换F: 看到F,我们需知道它是15(可能你

9、还不熟悉A,F这五个数),然后15如何用8421凑呢,应该是8 + 4 + 2 + 1,所以四位全为1 :1111。 接着转换D 看到D,知道它是13,13如何用8421凑呢,应该是:8 + 4 + 1,即:1101。 所以,FD转换为二进制数,为:1111 1101 由于十六进制转换成二进制相当直接,所以,我们需要将一个十进制数转换成2进制数时,也可以先转换成16进制,然后再转换成2进制。 比如,十进制数 1234转换成二制数,如果要一直除以2,直接得到2进制数,需要计算较多次数。所以我们可以先除以16,得到16进制数: 被除数 计算过程 商 余数 1234 1234/16 77 2 77

10、77/16 4 13 (D) 4 4/16 0 4 结果16进制为:4D2 然后我们可直接写出4D2的二进制形式: 0100 1101 0010 其中对映关系为: 0100 - 4 1101 - D 0010 - 2 同样,如果一个二进制数很长,我们需要将它转换成10进制数时,除了前面学过的方法是,我们还可以先将这个二进制转换成16进制,然后再转换为10进制。 下面举例一个int类型的二进制数: 01101101 11100101 10101111 00011011 我们按四位一组转换为16进制:6D E5 AF 1B 十进制转十六进制 采余数定理分解,例如将487710转成十六进制: 1 4

11、87710?16=30481.14(E) 30481?16=1905.1 1905?16=119.1 119?16=7.7 7?16=0.7 这样就计到487710(10)=7711E(16) 编辑本段表达方法 程序的表达方法环境 格式备注URL%hex无 XML,XHTML&#xhex无HTML,CSS#hex6位,表示颜色UnicodeU+hex6位,表示字符编码MIME=hex无Modula-2#hex无Smalltalk,ALGOL 6816rhex无Common Lisp#xhex或#16rhex无IPv68个hex用:分隔无 C C+的表达方法 如果不使用特殊的书写形式,16进制数

12、也会和10进制相混。随便一个数:9876,就看不出它是16进制或10进制。 C,C+规定,16进制数必须以 0x开头。比如 0x1表示一个16进制数。而1则表示一个十进制。另外如:0xff,0xFF,0X102A,等等。其中的x也不区分大小写。(注意:0x中的0是数字0,而不是字母O) 以下是一些用法示例: int a = 0x100F; int b = 0x70 + a; 至此,我们学完了所有进制:10进制,8进制,16进制数的表达方式。最后一点很重要,C/C+中,10进制数有正负之分,比如12表示正12,而-12表示负12,;但8进制和16进制只能表达无符号的正整数,如果你在代码中写:-0

13、78,或者写:-0xF2,C,C+并不把它当成一个负数。 在转义符中的使用 转义符也可以接一个16进制数来表示一个字符。如在6.2.4小节中说的 ? 字符,可以有以下表达方式: ? /直接输入字符 77 /用八进制,此时可以省略开头的0 0x3F /用十六进制 同样,这一小节只用于了解。除了空字符用八进制数 0 表示以外,我们很少用后两种方法表示一个字符。 编辑本段各码转换 结束了各种进制的转换,我们来谈谈另一个话题:原码、反码、补码。 我们已经知道计算机中,所有数据最终都是使用二进制数表达。 我们也已经学会如何将一个10进制数如何转换为二进制数。 不过,我们仍然没有学习一个负数如何用二进制表

14、达。 比如,假设有一 int 类型的数,值为5,那么,我们知道它在计算机中表示为:5 00000000 00000000 00000000 00000101 转换成二制是101,不过int类型的数占用4字节(32位),所以前面填了一堆0。 现在想知道,-5在计算机中如何表示, 在计算机中,负数以其正值的补码形式表达。 什么叫补码呢,这得从原码,反码说起。 原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。 比如 00000000 00000000 00000000 00000101 是 5的 原码。 反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。 取反操作指:原为1,

15、得0;原为0,得1。(1变0; 0变1) 比如: 00000000 00000000 00000000 00000101 每一位取反,得11111111 11111111 11111111 11111010。 称:11111111 11111111 11111111 11111010 是 00000000 00000000 00000000 00000101 的反码。 反码是相互的,所以也可称: 11111111 11111111 11111111 11111010 和 00000000 00000000 00000000 00000101 互为反码。 补码:反码加1称为补码。 也就是说,要得

16、到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。 比如: 00000000 00000000 00000000 00000101 的反码是: 11111111 11111111 11111111 11111010 那么,补码为: 11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011 所以,-5 在计算机中表达为:11111111 11111111 11111111 11111011。转换为十六进制:0xFFFFFFFB。 再举一例,我们来看整数-1在计算机中如何表示。 假设这也是

17、一个int类型,那么: 1、先取1的原码: 00000000 00000000 00000000 00000001 2、得反码: 11111111 11111111 11111111 11111110 3、得补码: 11111111 11111111 11111111 11111111 可见,,1在计算机里用二进制表达就是全1。16进制为:0xFFFFFFFF。 一切都是纸上说的说,1在计算机里表达为0xFFFFFFFF,我能不能亲眼看一看呢,当然可以。利用C+ Builder的调试功能,我们可以看到每个变量的16进制值。 编辑本段变量 下面我们来动手完成一个小小的实验,通过调试,观察变量的值

18、。 我们在代码中声明两个int 变量,并分别初始化为5和-5。然后我们通过CB提供的调试手段,可以查看到程序运行时,这两个变量的十进制值和十六进制值。 首先新建一个控制台工程。加入以下黑体部分(就一行): /- #pragma hdrstop /- #pragma argsused int main(int argc,char* argv) int aaaa = 5,bbbbb = -5; return 0; /- 没有我们熟悉的的那一行: getchar(); 所以,如果全速运行这个程序,将只是DOS窗口一闪而过。不过今天我们将通过设置断点,来使用程序在我们需要的地儿停下来。 设置断点:最常

19、用的调试方法之一,使程序在运行时,暂停在某一代码位置, 在CB里,设置断点的方法是在某一行代码上按F5或在行首栏内单击鼠标。 如下图: 在上图中,我们在return 0;这一行上设置断点。断点所在行将被CB以红色显示。 接着,运行程序(F9),程序将在断点处停下来。 (请注意两张图的不同,前面的图是运行之前,后面这张是运行中,左边的箭头表示运行运行到哪一行) 当程序停在断点的时,我们可以观察当前代码片段内,可见的变量。观察变量的方法很多种,这里我们学习使用Debug Inspector (调试期检视),来全面观察一个变量。 以下是调出观察某一变量的 Debug Inspector 窗口的方法:

20、 先确保代码窗口是活动窗口。(用鼠标点一下代码窗口) 按下Ctrl键,然后将鼠标挪到变量 aaaa 上面,你会发现代码中的aaaa变蓝,并且出现下划线,效果如网页中的超链接,而鼠标也变成了小手状: 点击鼠标,将出现变量aaaa的检视窗口: (笔者使用的操作系统为WindowsXP,窗口的外观与Win9X有所不同) 从该窗口,我可以看到: aaaa :变量名 int :变量的数据类型 0012FF88:变量的内存地址,请参看5.2 变量与内存地址;地址总是使用十六进制表达 5 :这是变量的值,即aaaa = 5; 0x00000005 :同样是变量的值,但采用16进制表示。因为是int类型,所以

21、占用4字节。 首先先关闭前面的用于观察变量aaaa的Debug Inspector窗口。 现在,我们用同样的方法来观察变量bbbb,它的值为-5,负数在计算机中使用补码表示。 正如我们所想,-5的补码为:0xFFFFFFFB。 再按一次F9,程序将从断点继续运行,然后结束。 编辑本段总结 很难学的一章, 来看看我们主要学了什么: 1)我们学会了如何将二、八、十六进制数转换为十进制数。 三种转换方法是一样的,都是使用乘法。 2)我们学会了如何将十进制数转换为二、八、十六进制数。 方法也都一样,采用除法。 3)我们学会了如何快速的地互换二进制数和十六进制数。 要诀就在于对二进制数按四位一组地转换成

22、十六进制数。 在学习十六进制数后,我们会在很多地方采用十六进制数来替代二进制数。 4)我们学习了原码、反码、补码。 把原码的0变1,1变0,就得到反码。要得到补码,则先得反码,然后加1。 以前我们只知道正整数在计算机里是如何表达,现在我们还知道负数在计算机里使用其绝对值的补码表达。 比如,,5在计算机中如何表达,回答是:5的补码。 5)最后我们在上机实验中,这会了如何设置断点,如何调出Debug Inspector窗口观察变量。 以后我们会学到更多的调试方法。 编辑本段标准表示 在数制使用时,常将各种数制用简码来表示:如十进制数用D表示或省略;二进制用B来表示;十六进制数用H来表示。 如:十制

23、数123表示为:123D或者123;二进制数1011表示为:1011B;十六进制数3A4表示为:3A4H。 另外在编程中十六进制数也用“0x”作为开头。 编辑本段意义 1 用于计算机领域的一种重要的数制。 2 对计算机理论的描述,计算机硬件电路的设计都是很有益的。比如逻辑电路设计中,既要考虑功能的完备,还要考虑用尽可能少的硬件,十六进制就能起到一些理论分析的作用。比如四位二进制电路,最多就是十六种状态,也就是一种十六进制形式,只有这十六种状态都被用上了或者尽可能多的被用上,硬件资源才发挥了尽可能大的作用。 3 十六进制更简短,因为换算的时候一位16进制数可以顶4位2进制数。 4(你可以在二进制

24、前加几个0,意义不变) 二进制 八进制 十进制 十六进制 O1 1 1 1 10 2 2 2 11 3 3 3 100 4 4 4 101 5 5 5 110 6 6 6 111 7 7 7 1000 10 8 8 1001 11 9 9 1010 12 10 A 1011 13 11 B 1100 14 12 C 1101 15 13 D 1110 16 14 E 1111 17 15 F 10000 20 16 10 10001 21 17 11 10010 22 18 12 10011 23 19 13 10100 24 20 14 10101 25 21 15 10110 26 22

25、16 10111 27 23 17 11000 30 24 18 11001 31 25 19 11010 32 26 1A 11011 33 27 1B 11100 34 28 1C 11101 35 29 1D 11110 36 30 1E 11111 37 31 1F 100000 40 32 20 100001 41 33 21 100010 42 34 22 100011 43 35 23 100100 44 36 24 100101 45 37 25 100110 46 38 26 100111 47 39 27 101000 50 40 28 101001 51 41 29 10

26、1010 52 42 2A 101011 53 43 2B 101100 54 44 2C 101101 55 45 2D 101110 56 46 2E 101111 57 47 2F 110000 60 48 30 110001 61 49 31 110010 62 50 32 110011 63 51 33 110100 64 52 34 110101 65 53 35 110110 66 54 36 110111 67 55 37 111000 70 56 38 111001 71 57 39 111010 72 58 3A 111011 73 59 3B 111100 74 60 3

27、C 111101 75 61 3D 111110 76 62 3E 111111 77 63 3F 1000000 100 64 40 1000001 101 65 41 1000010 102 66 42 1000011 103 67 43 1000100 104 68 44 1000101 105 69 45 1000110 106 70 46 1000111 107 71 47 1001000 110 72 48 1001001 111 73 49 1001010 112 74 4A 1001011 113 75 4B 1001100 114 76 4C 1001101 115 77 4

28、D 1001110 116 78 4E 1001111 117 79 4F 1010000 120 80 50 1010001 121 81 51 1010010 122 82 52 1010011 123 83 53 1010100 124 84 54 1010101 125 85 55 1010110 126 86 56 1010111 127 87 57 1011000 130 88 58 1011001 131 89 59 1011010 132 90 5A 1011011 133 91 5B 1011100 134 92 5C 1011101 135 93 5D 1011110 136 94 5E 1011111 137 95 5F 1100000 140 96 60 1100001 141 97 61 1100010 142 98 62 1100011 143 99 63 1100100 144 100 64

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1