十六算法
⑴ 八进制转换成十六进制的算法 请举例说明
八进制数转换为十六进制
转换方法:以二进制位中介,即先将八进制数按照一位拆三位的方法转换为二进制,在对这个二进制数使用四位合一位的方法转换为十六进制。
如:将13.4O转换为十六进制。
1、将13.4O转换为二进制。转换方法在本文的01部分,结果是1011.1B。
2、将第一步中的二进制数1011.1B转换为十六进制。整数部分1011正好是四位,组成一组,转换为十六进制是B(可先将1011按权展开得到一个十进制数是11,11对应十六进制的B)。小数部分只有一位,后面要补三个0,组成一组,1000,转换为十六进制是8。所以,转换为十六进制的结果是B.8H。
(1)十六算法扩展阅读:
十六进制数转换为八进制
转换方法:以二进制位中介,即先将十六进制数按照一位拆四位的方法转换为二进制,在对这个二进制数使用三位合一位的方法转换为八进制。
如:将2BB.2EH转换为八进制。
1、将2BB.2EH转换为二进制。转换方法在本文的02部分,结果是1010111011.0010111B。
2、将第一步中的二进制数1010111011.0010111B转换为八进制。整数部分有10位,前面补两个0,组成四组。小数部分有7位,后面要补两个0,组成三组。转换为八进制的结果是1273.134O。
⑵ 二进制转十六进制算法(举例)
二进制转十六进制
二进制数要转换为十六进制,就是以4位一段,分别转换为十六进制。
从右到左 4位一切
例如 100111110110101
左边不满4位的可以用0补满 0100,1111,1011,01012
进制0000对应16位进制0
0001>>>1
0010>>>2
0011>>>3
0100>>>4
0101>>>5
0110>>>6
0111>>>7
1000>>>8
1001>>>9
1010>>>A
1011>>>B
1100>>>C
1101>>>D
1110>>>E
1111>>>F
所以上面的2进制转为16进制为 4FB5
(2)十六算法扩展阅读
十六进制--->二进制
反过来,当看到 FD时,迅速将它转换为二进制数方法
先转换F:
看到F,需知道它是15,然后15如何用8421凑呢?应该是8 + 4 + 2 + 1,所以四位全为1 :1111。
接着转换 D:
看到D,知道它是13,13如何用8421凑呢?应该是:8 + 4 + 1,即:1101。
所以,FD转换为二进制数,为: 1111 1101
由于十六进制转换成二进制相当直接,所以,我们需要将一个十进制数转换成2进制数时,也可以先转换成16进制,然后再转换成2进制。
⑶ 16进制什么意思怎么算法,能详细多举几个例子吗.别复制百度的来,主要多举几个例子能看明白,谢谢了
先搞懂最熟悉的十进制:每位上的基数分别是1000 100 10 1. 1/10 1/100 1/1000
有了基数,看看十进制是怎么计数的:2020.123 结合上边基数位对齐来看
记数的含义是:这个数包含2个1000,0个100,2个10,0个1,1个0.1,2个0.01和3个0.001
n进制基数:个位1,高位=低位*n
十六进制基数:256 16 1. 1/16 1/256
因此十六进制数1a3.bH的含义是:这个数包含1个256,10个16,3个1和11个1/16,加起来就是十进制表示了。(后缀H为十六进制数,D十进制,o八进制,B二进制)
同时,如果告诉你十进制数,那么你用十六进制基数从高位到低位顺序可以将这个数凑出来写成十六进制,比如33D中可以包含2个16和1个1,那么写出十六进制表示为21H。
其他n进制也是这么计数和笔算的,只要记住所有进制计数基数的个位是1即可。
⑷ 16进制什么意思怎么算法,能详细多举几个
fe0c(阿拉伯数字0) 在计算机上,十进制数用 d 后缀表示,如 10d ;十六进制数用 H 后缀表示,如 7H 。 十六进制由 0、1、2、3、4、5、6、7、8、9、10、11、12、13、14、15共 16 个数字组成,其中10、11、12、13、14、15分别用“A”“B”“C”“D”“E”“F”代表,逢 16 进 1 。 要将十进制转换为十六进制,只需用十进制的数除以 16 ,然后将余数拼接起来就行了。 那么65036 除以 16 等于 4064 余 12 ,记下这个 12 ;4064 除以 16 正好等于 254 余 0,254除以16等于15余14,14和16已经除不尽了,所以最后将它们拼接起来,十进制的65036转换为十六进制后是: F(15)E(14)0C(12)
⑸ 十六进制的具体算法是什么啊
上面说的很对
16进制就是逢16进1
跟10进制一样的道理
逢10进1
10进制是0到9
16进制是0到F
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
A是10
B是11
以此类推
⑹ 十六进制计算方法
0-9对应0-9;
A-F对应10-15;
十六进制数的加减法的进/借位规则为:借一当十六,逢十六进一。
十六进制数同二进制数及十进制数一样,也可以写成展开式的形式。
十进制整数转十六进制数:“除以16取余,逆序排列”(除16取余法)
例:(1765)10=(6E5)2
1765/16=110.......5
110/16=6........14
616=0......6
因为14对应E
十六进制数转换成二进制数:把每一个十六进制数转换成4位的二进制数,就得到一个二进制数。
十六进制数字与二进制数字的对应关系如下:
0000 -> 0 0100 -> 4 1000 -> 8 1100 -> C
0001 -> 1 0101 -> 5 1001 -> 9 1101 -> D
0010 -> 2 0110 -> 6 1010 -> A 1110 -> E
0011 -> 3 0111 -> 7 1011 -> B 1111 -> F
例:将十六进制数5DF.9 转换成二进制:
5 D F . 9 0101 1101 1111 .1001
即:(5DF.9)16 =(10111011111.1001)2
例:将二进制数1100001.111 转换成十六进制:
0110 0001 . 1110 6 1 . E
即:(1100001.111)2 =(61.E)16
(6)十六算法扩展阅读:
进制转换的理论:
1、 二进制数、十六进制数转换为十进制数:
用按权展开法把一个任意R 进制数a n a n-1 ...a1a 0 . a -1 a -2...a -m转换成十进制数,其十进制数值为每一位数字与其位权之积的和。
a n ×Rn+ a n-1×R n-1 +…+ a 1×R 1 + a 0×R 0 + a -1 ×R -1+ a -2×R -2+ …+ a -m ×R -m
2、 十进制转化成R 进制十进制数轮换成R 进制数要分两个部分:
整数部分要除R 取余数,直到商为0,得到的余数即为二进数各位的数码,余数从右到左排列(反序排 列) 。小数部分要乘R 取整数,得到的整数即为二进数各位的数码,整数从左到右排列(顺序排列) 。
3、十六进制转化成二进制:每一位十六进制数对应二进制的四位,逐位展开。
4、 二进制转化成十六进制:将二进制数从小数点开始分别向左(对二进制整数)或向右(对二进制小数)每四位组成一组,不足四位补零。
⑺ 关于16进制算法
其实这个问题是很简单的啊,1*2^4=1×2×2×2×2=16.而1*2^3=1×2×2×2=8的啊,请问楼主是不是这样的呢???
我看楼主可能是被上面写法迷惑了的呢,给你来个清晰的写法,如下:
把一个二进制转换成十进制采用方法:把这个二进制的最后一位乘上2^0,倒数第二位乘上2^1,……,一直到最高位乘上2^n,然后将各项乘积相加的结果就它的十进制表达式。
把二进制11110转换为十进制
(11110)2=1*2^4+1*2^3+1*2^2+1*2^1+0*2^0=
=16+8+4+2+0
=(30)10
这下楼主明白了嘛!!
这是写法问题,不是说十进制的1*24等于十进制的24的,前面的那个24其实是2的4次方呢。
⑻ 十六进制应该是怎么设计算法
稍微有点复杂,请认真看完。
一十进制就是逢十进一(0,1,2,3,4,5,6,7,8,9,后面就要进位才能表示了)
十六进制就是逢十六进一(0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,后面就要进位才能表示了)
所谓进制就是单个数不能表示时要用二位数及二位数以上的数表示的处理办法.其实可以任意进制,只是要用起来方便罢了,比如时间就是60进制,纪年中的世纪是一百进度,圆的一周用度数表示时是360进制.
十进制: 34 就是 3 * 10^1 + 4 * 10^0
而在十六进制中: 34就是 3 * 16^1 + 4 * 16^0 (转换成十进制只需乘出
结果就行了,得52,即十六进制中的34为十进制中的52)
十进制化为十六进制就是除16的办法: 34除以16,得2余2,即为22,即十进制中的34
这十六进制中的22
(即:十六进制化成十进制是乘16,十进制化成十六进制是除16)
事实上,k(k是正整数)进制数逢k进一这么个意义,一个十进制数可写成
a(n)*10^n+...+a(1)*10+a(0)+a(-1)*10^(-1)+... (a(i)表示0—9中的某个数)
同样,k进制数有形式:
b(n)*k^n+...+b(1)*k+b(0)+b(-1)*k^(-1)+... (b(i)表示0—(k-1)中的某个数)
当一个k进制数要转化为十进制数时,用上式直接计算即可;而当十进制数要转化为k进制数时,则对其整数部分除k取余,对其小数部分则乘k取整,此过程下以十进制转化十六进制为例举一例:
十进制数1673.59375
1673/16=104...9 , 104/16=6...8 , 6/16=0...6;
0.59375*16=9.5 (取9), 0.5*16=8.0 (取8).
所以十进制数1673.59375转化为十六进制数后为: 986.98
二数的进制和进制转换
考虑一个10进制数123,数字1、2、3在这个数中的重要性是不一样的,3代表的是100的3倍,2代表101的2倍,而1代表的则是102的1倍。数学上把100,101和102称为对应数位上的权重(简称权),分别表示了对应位上的数字对整个数值的“贡献”。对于10进制数来说,各位权从小到大分别是100、101、102……,都是10的各次幂。对于各位上的数字,我们称为某权的系数,简称系数。
其他进制数也存在同样的问题,例如2进制数各位权重分别是2的各次幂,8进制数是8的各次幂等等。
需要说明的是,各种进制数都是人们为了理解数而进行的一种表述,在计算机计算过程中,是不存在进制这种概念的,对于C语言表示数的三种形式:0x12(16进制)、18(10进制)和022(8进制),在内存中都是一样的。
如果已经知道一个数k,在某种进制w条件下,计算各位的系数一般采用除余法,基本算法如下:
首先估计这个数的最大位数N
n = N,divisor = wn-1
b(n) = k / divisor, k = k % divisor,divisor = divisor /w,n --
如果n ==0算法结束 ,否则转3
例如对于C语言中的unsigned char 类型,最大可能为3位8进制数,如果已经知道一个数n=252,计算8进制的过程如下:
N =3
n = N,divisor = 8n-1 = 64
b(3) = 252 / 64 = 3, k = k % 64 =60,divisor = divisor /8 = 8,n -- = 2
b(2) = 60/8 = 7,k = k %8 =4,divisor = 8/8 =1,n = 1
b(1) = k / 1= 4 ,k=k %1 =0,divisor = 1/8,n = 0
n == 0算法结束
计算结果252就是8进制数0374
如果不按照上面的幂次方式规定各位数的权,也可以定义一些特殊的进制数。例如,我们按照从小到大顺序分别规定各位的权重分别为w(n),n=1,2,3....,(注意,必须满足w(n) | w(m),n<= m,也就是低位权必须能整除高位权)已知一个数计算各位系数也一样可以采用修正后的除余法。修正后的除余法为:
首先估计这个数的最大位数N
n = N,divisor = w(n)
b(n) = k / divisor, k = k % divisor,n--,divisor = w(n)
如果n ==0算法结束 ,否则转3
可见,当w(n) = bn时,这个修正的除余法就和开始的除余法等价了
如果需要在不同进制间转换,最简单的方法是先把一种不容易进行四则运算的进制转换成容易进行四则运算的10进制,然后利用除余法转换成给定的进制。例如对于022,很容易利用权的定义计算出他的10进制形式为2 * 81 + 2 * 80 = 18,转换成16进制利用除余法可以得到为0x12。
⑼ 16进制的算法,请举例~
例如将十进制数55转化为十六进制
55÷16=3.....7
3÷16=0.....3
55的十内六进容制是37
例如将十六进制数37化为十进制数
37=3*16+7*1=55
(9)十六算法扩展阅读:
在历史上,中国曾经在重量单位上使用过16进制,比如,规定16两为一斤。
如今的16进制则普遍应用在计算机领域,这是因为将4个位元(Bit)化成单独的16进制数字不太困难。1字节可以表示成2个连续的16进制数字。可是,这种混合表示法容易令人混淆,因此需要一些字首、字尾或下标来显示。
⑽ 16进制算法
16H