进制相互转化的算法公式
2017-09-04 17:24
871 查看
对于整数:有四种表现形式
二进制:0,1 逢二进一八进制:0-7
逢八进一,用0开头表示
十进制:0-9
逢十进一
十六进制:0-9,A-F (A :10 B:11 递增)逢十六进一,0x表示
逢十进一:在生活中,0-9是一位数,9加一就是10(二位数)了,这就叫逢十进一、
逢二进一:1就是最大位,打过1就要进一位,例如:
1+1=10 ,1+1+1=11。
进制转换
例如:进制数转十进制 1011.01
从小数点始,以0为开始数,小数点左面有四位 对应: 1,1,0,1;小数点右面有两位 对应:0,1。
如果1011.01是二进制的,
1011.01 = 1*2^3 + 0*2^2 + 1*2^1 + 1*2^0 + 0*2^-1 + 1*2^-2 =
11(十进制)其中 2为基数。
1*2^3 这里1代表 1011.01 中的 最高位(个十百千的位) ,2代表 要转化的进制,3是从小数点起往左计数从0开始,这里的最高位就是3
0*2^2 这里0代表 1011.01 中的 第二高位就是百位,2代表
要转化的进制,2是从小数点起往左计数从0开始,百位为2。
以此类推。
同理,如果1011是八进制的,那么 8为基数
1011 =1*8^3 + 0*8^2 + 1*8^1 + 1*8^0
= 521(十进制)。
ok,那么十进制如何转成二进制的?
以十进制的11.875为例
先取出整数 11
11/
2 = 5 ... 1
5/2
= 2 ... 1
2/2
= 1 ... 0
1/2=
0 ...1
既 (11)10 = (1011)B
再取出小数 以0.875
0.875*2 = 1.75 1
0.75*2 = 1.5 1
0.5*2 = 1 1
既 (0.875)10 = (0.111)B
所以(11.875)10 = (1011.111)B
其中2为基数,进制转换只需要改变基数就行了。
相关文章推荐
- 十进制和其他进制的相互转化(自己写的)
- 进制之间的相互转化
- 进制转化算法(C++实现)——创新工场笔试归来
- 算法训练 进制转化
- 数字进制转化算法
- java中进制之间的相互转化
- Java 算法 JSON Bean相互转化及JSON生成实体类
- 进制转化算法(C++实现)——创新工场笔试归来
- 任何进制的相互转化
- 设计一个算法把一个十进制整数转化为二至九进制之间的任意进制数输出
- SSE图像算法优化系列十五:YUV/XYZ和RGB空间相互转化的极速实现(此后老板不用再担心算法转到其他空间通道的耗时了)。
- bash实现10进制,16进制等等相互之间转化(转)
- 【算法题】整数与字符串之间的相互转化
- 进制间相互转化,优化版
- C++10进制字符串与十六进制字符串相互转化
- 各进制之间的相互转换公式
- 3-19各类进制相互转化和字符串操作方法
- 【问题】:进制转化算法(迭代版&递归版)
- 不同进制间的相互转化。
- C 【进制表示 及 相互转化】