二、八、十、十六进制的使用及转换_第1页
二、八、十、十六进制的使用及转换_第2页
二、八、十、十六进制的使用及转换_第3页
二、八、十、十六进制的使用及转换_第4页
二、八、十、十六进制的使用及转换_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

二 八 十 十六进制的使用及转换 十六进制 英文名称 Hexadecimal 是计算机中数据的一种表示方法 同我们日常生活中的表示法不一样 它由 0 9 A F 组成 字母不区分大小写 与 10 进制的对应关系是 0 9 对应 0 9 A F 对应 10 15 N 进制的数可以 用 0 N 1 的数表示 超过 9 的用字母 A F 基本简介 十六进制 英文名称 Hexadecimal 是计算机中数据的一种表示方法 同我们日常 生活中的表示法不一样 它由 0 9 A F 组成 字母不区分大小写 与 10 进制的对应关系是 0 9 对应 0 9 A F 对应 10 15 N 进制的数可以用 0 N 1 的数表示 超过 9 的用字母 A F 表示方法 十六进制照样采用位置计数法 位权是 16 为底的幂 对于 n 位整数 m 位小数的 十六进制数用加权系数的形式表示如下 举例说明 16 进制的 20 表示成 10 进制就是 2 16 0 16 32 10 进制的 32 表示成 16 进制就是 20 十进制数可以转换成十六进制数的方法是 十进制数的整数部分 除以 16 取余 十进制数的小数部分 乘 16 取整 进行转换 比如说十进制的 0 1 转换成八进制为 0 0631463146314631 就是 0 1 乘以 8 0 8 不足 1 不取整 0 8 乘 以 8 6 4 取整数 6 0 4 乘以 8 3 2 取整数 3 依次下算 编程中 我们常用的还是 10 进制 毕竟 C C 是高级语言 比如 int a 100 b 99 不过 由于数据在计算机中的表示 最终以二进制的形式存在 所以有时候使用二进制 可以更直观地解 决问题 但二进制数太长了 比如 int 类型占用 4 个字节 32 位 比如 100 用 int 类型的二进制数表达将是 000000000000000001100100 面对这么长的数进行思考或操作 没有人会喜欢 因此 C C 没有提供在代码直接写二进制数的方法 用 16 进制或 8 进制可以解决这个问题 因为 进制越大 数的表达长度也就越短 不过 为什么偏偏是 16 或 8 进制 而不其它的 诸如 9 或 20 进制呢 2 8 16 分别是 2 的 1 次方 3 次方 4 次方 这一点使得三种进 制之间可以非常直接地互相转换 8 进制或 16 进制缩短了二进制数 但保持了二进制数的表达特点 在下面的 关于进制转换的课程中 你可以发现这一点 转换 二进制转换十进制二进制转换十进制 二进制数第 0 位的权值是 2 的 0 次方 第 1 位的权值是 2 的 1 次方 所以 设有一个二进制数 101100100 转换为 10 进制为 356 用横式计算 0 2 0 2 1 2 0 2 0 2 1 2 1 2 0 2 1 2 356 0 乘以多少都是 0 所以我们也可以直接跳过值为 0 的位 1 2 1 2 1 2 1 2 356 4 32 64 256 356 八进制转换十进制八进制转换十进制 八进制就是逢 8 进 1 八进制数采用 0 7 这八数来表达一个数 八进制数第 0 位的权值为 8 的 0 次方 第 1 位权值为 8 的 1 次方 第 2 位权值为 8 的 2 次方 所以 设有一个八进制数 1507 转换为十进制为 839 具体方法如下 可以用横式直接计算 7 8 0 8 5 8 1 8 839 也可以用竖式表示 第 0 位 7 8 0 7 第 1 位 0 8 1 0 第 2 位 5 8 2 320 第 3 位 1 8 3 512 十六进制转换十进制十六进制转换十进制 16 进制就是逢 16 进 1 但我们只有 0 9 这十个数字 所以我们用 A B C D E F 这六个字母来分别 表示 10 11 12 13 14 15 字母不区分大小写 十六进制数的第 0 位的权值为 16 的 0 次方 第 1 位的权值为 16 的 1 次方 第 2 位的权值为 16 的 2 次 方 所以 在第 N N 从 0 开始 位上 如果是数 大于等于 0 并且 小于等于 15 即 F 表示的大小为 16 的 N 次方 假设有一个十六进数 2AF5 直接计算就是 5 16 F 16 A 16 2 16 10997 也可以用竖式表示 第 0 位 5 16 5 第 1 位 F 16 1 240 第 2 位 A 16 2 2560 第 3 位 2 16 3 8192 10997 此处可以看出 所有进制换算成 10 进制 关键在于各自的权值不同 假设有人问你 十进数 1234 为什么是一千二百三十四 你可以给他这么一个算式 1234 1 10 2 10 3 10 4 10 十六进制互相转换十六进制互相转换 首先我们来看一个二进制数 1111 它是多少呢 你可能还要这样计算 1 2 1 2 1 2 1 2 1 1 1 2 1 4 1 8 15 然而 由于 1111 才 4 位 所以我们必须直接记住它每一位的权值 并且是从高位往低位记 8 4 2 1 即 最高位的权值为 2 3 8 然后依次是 2 2 4 2 1 2 2 0 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 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 可能你还不熟悉 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 77 16 4 13 D 4 4 16 0 4 结果 16 进制为 4D2 然后我们可直接写出 4D2 的二进制形式 010011010010 其中对映关系为 0100 4 1101 D 0010 2 同样 如果一个二进制数很长 我们需要将它转换成 10 进制数时 除了前面学过的方法是 我们还可以先 将这个二进制转换成 16 进制 然后再转换为 10 进制 下面举例一个 int 类型的二进制数 01101101111001011010111100011011 我们按四位一组转换为 16 进制 6D E5 AF 1B 十进制转十六进制 采余数定理分解 例如将 487710 转成十六进制 487710 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 int b 0 x70 a 至此 我们学完了所有进制 10 进制 8 进制 16 进制数的表达方式 最后一点很重要 C C 中 10 进 制数有正负之分 比如 12 表示正 12 而 12 表示负 12 但 8 进制和 16 进制只能表达无符号的正整数 如果你 在代码中写 078 或者写 0 xF2 C C 并不把它当成一个负数 在转义符中的使用 转义符也可以接一个 16 进制数来表示一个字符 如 字符 可以有以下表达方式 直接输入字符 77 用八进制 此时可以省略开头的 0 0 x3F 用十六进制 同样 这一小节只用于了解 除了空字符用八进制数 0 表示以外 我们很少用后两种方法表示一个字符 各码转换 结束了各种进制的转换 我们来谈谈另一个话题 原码 反码 补码 我们已经知道计算机中 所有数据最终都是使用二进制数表达 我们也已经学会如何将一个 10 进制数如何转换为二进制数 不过 我们仍然没有学习一个负数如何用二进制表达 比如 假设有一 int 类型的数 值为 5 那么 我们知道它在计算机中表示为 5 00000000000000000000000000000101 转换成二制是 101 不过 int 类型的数占用 4 字节 32 位 所以前面填了一堆 0 想知道 5 在计算机中如何表示吗 在计算机中 负数以其正值的补码形式表达 什么叫补码呢 这得从原码 反码说起 原码 一个整数 按照绝对值大小转换成的二进制数 称为原码 比如 00000000000000000000000000000101 是 5 的 原码 反码 将二进制数按位取反 所得的新二进制数称为原二进制数的反码 取反操作指 原为 1 得 0 原为 0 得 1 1 变 0 0 变 1 比如 00000000000000000000000000000101 每一位取反 得 11111111 11111111 11111111 11111010 称 11111111 11111111 11111111 11111010 是 00000000000000000000000000000101 的反码 反码是相互的 所以也可称 11111111111111111111111111111010 和 00000000000000000000000000000101 互为反码 补码 反码加 1 称为补码 也就是说 要得到一个数的补码 先得到反码 然后将反码加上 1 所得数称为补码 比如 00000000 000000000000000000000101 的反码是 11111111111111111111111111111010 那么 补码为 11111111 11111111 11111111 11111010 1 11111111 11111111 11111111 11111011 所以 5 在计算机中表达为 11111111 11111111 11111111 11111011 转换为十六进制 0 xFFFFFFFB 再举一例 我们来看整数 1 在计算机中如何表示 假设这也是一个 int 类型 那么 1 先取 1 的原码 00000000000000000000000000000001 2 得反码 11111111111111111111111111111110 3 得补码 11111111111111111111111111111111 可见 1 在计算机里用二进制表达就是全 1 16 进制为 0 xFFFFFFFF 一切都是纸上说的 说 1 在计算机里表达为 0 xFFFFFFFF 我能不能亲眼看一看呢 当然可以 利用 C Builder 的调试功能 我们可以看到每个变量的 16 进制值 变量 下面我们来动手完成一个小小的实验 通过调试 观察变量的值 我们在代码中声明两个 int 变量 并分别初始化为 5 和 5 然后我们通过 CB 提供的调试手段 可以查看到 程序运行时 这两个变量的十进制值和十六进制值 首先写一个如下的 C 语言控制台程序 设置断点 最常用的调试方法之一 使程序在运行时 暂停在某一代码位置 在 Code Blocks 中 设置断点的方法是在某一行代码上按 F5 或在行首栏内单击鼠标 我们在 return 0 这一行上设置断点 断点所在行将被 Code Blocks 以红色显示 接着 运行程序 F9 程序将在断点处停下来 请注意两张图的不同 前面的图是运行之前 后面这张是运行中 左边的箭头表示运行运行到哪一行 当程序停在断点的时 我们可以观察当前代码片段内 可见的变量 观察变量的方法很多种 这里我们学 习使用 Debug Inspector 调试期检视 来全面观察一个变量 以下是调出观察某一变量的 Debug Inspector 窗口的方法 先确保代码窗口是活动窗口 用鼠标点一下代码窗口 按下 Ctrl 键 然后将鼠标挪到变量 aaaa 上面 你会发现代码中的 aaaa 变蓝 并且出现下划线 效果如 网页中的超链接 而鼠标也变成了小手状 点击鼠标 将出现变量 aaaa 的检视窗口 从该窗口 我可以看到 aaaa 变量名 int 变量的数据类型 0012FF88 变量的内存地址 请参看 5 2 变量与内存地址 地址总是使用十六进制表达 5 这是变量的值 即 aaaa 5 0 x00000005 同样是变量的值 但采用 16 进制表示 因为是 int 类型 所以占用 4 字节 首先先关闭前面的用于观察变量 aaaa 的 Debug Inspector 窗口 然后 我们用同样的方法来观察变量 bbbb 它的值为 5 负数在计算机中使用补码表示 正如我们所想 5 的补码为 0 xFFFFFFFB 再按一次 F9 程序将从断点继续运行 然后结束 总结 来看看我们主要学了什么 1 我们学会了如何将二 八 十六进制数转换为十进制数 三种转换方法是一样的 都是使用乘法 2 我们学会了如何将十进制数转换为二 八 十六进制数 方法也都一样 采用除法 3 我们学会了如何快速的地互换二进制数和十六进制数 要诀就在于对二进制数按四位一组地转换成十六进制数 在学习十六进制数后 我们会在很多地方采用十六进制数来替代二进制数 4 我们学习了原码 反码 补码 把原码的 0 变 1 1 变 0 就得到反码 要得到补码 则先得反码 然后加 1 以前我们只知道正整数在计算机里是如何表达 这时我们还知道负数在计算机里使用其绝对值的补码表达 比如 5 在计算机中如何表达 回答是 5 的补码 5 最后我们在上机实验中 这会了如何设置断点 如何调出 Debug Inspector 窗口观察变量 以后我们会学到更多的调试方法 标准表示 在数制使用时 常将各种数制用简码来表示 如十进制数用 D 表示或省略 二进制用 B 来表 示 十六进制数用 H 来表示 如 十制数 123 表示为 123D 或者 123 二进制数 1011 表示为 1011B 十六进制数 3A4 表示为 3A4H 另外在编程中十六进制数也用 0 x 作为开头 快捷转换表格 0 100 二进制八进制十进制十六进制 0000 1111 10222 11333 100444 101555 110666 111777 10001088 10011199 10101210A 10111311B 11001412C 11011513D 11101614E 11111715F 10000201610 10001211711 10010221812 10011231913 10100242014 10101252115 10110262216 10111272317 11000302418 11001312519 1101032261A 1101133271B 1110034281C 1110135291D 1111036301E 1111137311F 100000403220 100001413321 100010423422 100011433523 100100443624 100101453725 100110463826 100111473927 101000504028 101001514129 10101052422A 10101153432B 10110054442C 10110155452D 10111056462E 10111157472F 110000604830 110001614931 110010625032 110011635133 110100645234 110101655335 110110665436 110111675537 111000705638 111001715739 11101072583A 11101173593B 11110074603C 11110175613D 11111076623E 11111177633F 10000001006440 10000011016541 10000101026642 10000111036743 10001001046844 10001011056945 10001101067046 10001111077147 10010001107248 10010011117349 1001010112744A 1001011113754B 1001100114764C 1001101115774D 1001110116784E 1001111117794F 10100001208050 10100011218151 10100101228252 10100111238353 10101001248454 10101011258555 10101101268656 10101111278757 10110001308858 10110011318959 1011010132905A 1011011133915B 1011100134925C 1011101135935D 1011110136945E 1011111137955F 11000001409660 11000011419761 11000101429862 11000111439963 110010014410064 展开 进位制的记数系统进位制的记数系统 二进制三进制四进制五进制 六进制七进制八进制九进制 十进制十一进制十二进制十三进制 十四进制十五进制十六进制十八进制 二十进制二十四进制二十六进制二十七进制 三十进制三

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论