m ——小数的总位数。 d 下标——表示该位的数码。 b ——表示进位制的基数。 b 上标——表示该位的位权。 2 .计算机中常用的进位计数制计数制基数数码进位关系二进制 20、1 逢二进一八进制 80、1、2、3、4、5、6、7 逢八进一十进制 100、1、2、3、4、5、6、7、8、9 逢十进一十六进制 160、1、2、3、4、5、6、7、8、9 A、B、C、D、E、F 逢十六进一 3 .计数制的书写规则( 1 )在数字后面加写相应的英文字母作为标识。如:二进制数的 100 可写成 100B 十六进制数 100 可写成 100H (2 )在括号外面加数字下标。如:( 1011 )2 表示二进制数的 1011 ( 2DF2 ) 16 表示十六进制数的 2DF2 2. 数制之间的转换( 1 )十进制整数转换为二进制整数采用基数 2 连续去除该十进制整数,直至商等于“0”为止,然后逆序排列余数。(2 )十进制小数转化为二进制小数连续用基数 2 去乘以该十进制小数,直至乘积的小数部分等于“0”,然后顺序排列每次乘积的整数部分。(3 )十进制整数转换为八进制整数或十六进制整数采用基数 8 或基数 16 连续去除该十进制整数, 直至商等于“0”为止, 然后逆序排列所得到的余数。(4 )十进制小数转换为八进制小数或十六进制小数连续用基数 8 或基数 16 去乘以该十进制小数, 直至乘积的小数部分等于“0”, 然后顺序排列每次乘积的整数部分。(5 )二、八、十六进制数转换为十进制数用其各位所对应的系数,按“位权展开求和”的方法就可以得到。其基数分别为 2、8、 16。(6 )二进制数转换为八进制数从小数点开始分别向左或向右, 将每 3 位二进制数分成 1组, 不足 3 位数的补 0, 然后将每组用 1 位八进制数表示即可。(7 )八进制数转换为二进制数将每位八进制数用 3 位二进制数表示即可。(8) 二进制数转换为十六进制数从小数点开始分别向左或向右, 将每 4 位二进制数分成 1组, 不足 4 位的补 0 ,然后将每组用一位十六进制数表示即可。(9 )十六进制数转换为二进制数将每位十六进制数用 4 位二进制数表示即可。【例 】将十进制整数( 105 ) 10 转换为二进制整数,采用“除2 倒取余”的方法,过程如下: 2| 105 2| 52 余数为 12| 26 余数为 02| 13 余数为 02|6 余数为 12|3 余数为 02|1 余数为 10 余数为 1 所以,( 105 ) 10 =( 1101001 )2 【例 】将十进制小数( ) 10 转换为二进制小数,采用“乘2 顺取整”的方法,过程如下: ×2= 取整数位 1 ×2= 取整数位 1 ×2= 取整数位 0 ×2= 取整数位 1 所以,( ) 10 =( )2 如果出现乘积的小数部分一直不为“0”,则可以根据精度的要求截取一定的位数即可。【例 】将十进制整数( 2347 ) 10 转换为十六进制整数,采用“除 16 倒取余”的方法,过程如下: 16| 2347 16| 146 余数为 11 (十六进制数为 B) 16|9 余数为 20 余数为 9 他们都是计算机中数据的一种表示方法. 十进制是由 0~9 组成。十六进制由 0-9,A-F, 组成. 16 进制与 10 进制的对应关系是: 0-9 对应 0-9; A-F 对应 10-15; N 进制的数可以用 0---(N-1) 的数表示超过 9 的用字母 A-F 例如: 10 进制的 32 表示成 16 进制就是:20 16 进制的 32 表示成 10 进制就是:3× 16^1+2 × 16^0=50 为什么需要八进制和十六进制? 编程中,我们常用的还是 10 进制……毕竟 C/C++ 是高级语言。比如: inta= 100,b = 99; 不过,由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决问题。但,二进制数太长了。比如 int 类型占用 4 个字节, 32 位。比如 100 ,用 int 类型的二进制数表达将是: 0000 0000 0000 0000 0110 0100 面对这么长的数进行思考或操作,没有人会喜欢。因此, C,C++ 没有提供在代码直接写二进制数的方法。用 16 进制或 8 进制可以解决这个问题。因为,进制越大,数的表达长度也就越短。不过, 为什么偏偏是 16或8 进制,而不其它的,诸如 9或 20 进制呢? 2、8、 16 ,分别是 2的1 次方, 3 次方, 4 次方。这一点使得三种进制之间可以非常直接
16进制 来自淘豆网m.daumloan.com转载请标明出处.