进制的转换
来源:互联网 发布:网络举报查询系统 编辑:程序博客网 时间:2024/06/04 17:40
最近在弄蓝牙BLE的项目,用到了进制,以前也学过进制,但每次使用的时候还是要去查资料,记也没记住,所以决定写一篇博客,要用的时候直接查。好记忆不如烂笔头
首先来个十进制和二进制,毕竟接触的最早
十进制:用数字表示0123456789
二进制:用数字表示01;
十进制转换为二进制:
一个十进制数,分为整数部分和小数部分,如:1234567.89
下面来举一个列子:
98转换为二进制
98/2 = 49........0
49/2 = 24........1
24/2 = 12........0
12/2 = 6.........0
6/2 = 3...........0
3/2 = 1 ...........0
1/2= 0 ...........1
转换成的二进制为(从后往前读) 1000010;
计算方法:每次将整数部分除以2,得到余数, 从后面往前面获取;
小数部分转换为二进制:
小数部分乘以2,取整数,剩下的小数部分继续乘以2,一直到小数部分为0为止。。。如果小数部分一直不为0,则按照四舍五入的法则,根据后面一位是0还是1,取舍,如果是零,舍掉,如果是1,向入一位。换句话说就是0舍1入。
比如0.255;
0.255 * 2 = 0.51; ------0
0.51 *2 = 1.02; ------1
0.02 *2 =0.04; -----0
0.04*2 = 0.08; -----0
0.08 * 2 = 0.16; -----0
0.16 *2 = 0.32; ------0
0.32 *2 = 0.64; -----0
0.64*2=1.28; ------1
0.28 *2=0.56; -------0
0.56 *2 =1.12; -------1
0.12*2 = 0.24; ------0
0.24*2 = 0.48; ------0
0.48*2 = 0.96; ------0
0.96*2 = 1.92; -------1
0.92*2=1.84; -------1
0.84*2 =1.68; -------1
//这里我写的够长了,这里就这样了吧
二进制(从前往后读)0.
即是:0.01000001 (后面的我舍弃了,0舍弃,1向前进一位)
合并整数和小数
十进制转换为二进制
98.25
98.25转换二进制1000010.01000001;
---------------------------老子是一条分割线
二进制转换为十进制:
方法:按权重相加法,即二进制每位上的数乘以权重,然后相加之和即是十进制数
比如二进制数1101: 1*2^0 + 0*2^1 + 1*2^2 + 1*2^3=
转换为十进制 1 + 0 + 4 + 8 = 13;
小数转换为十进制: 0.0111;
0 *2^-1 +1 *2^-2 + 1*2^-3 +1*2^-4 =
0 +1/4 +1/8 +1/16 = 0.4375
整数和小数:
1101.0111 = 13.4375;
十进制和八进制的转换
十进制:0123456789
八进制:01234567
可以类似于十进制转二进制
整数部分;除8取余法,小数部分,剩义8取整数
一直取到小数部分为零为止。如果永远不能为零,就同十进制数的四舍五入一样,暂取个名字叫3舍4入。
将796转换为八进制
796/8=99 .....4
99/8 = 12 ......3
12/8 = 1 ..........4
1/8 = 0 ..............1
转为八进制为1434
小数0.703125
0.70315 * 8 = 5.625 ---5
0.625 *8 = 5.0 ---5
十进制:0.55
整数和小数:
796.703125
1434.55
八进制转换为十进制:
1434.55
1434
4*8^0 +3 *8^1 + 4 *8^2 + 1* 8^3 =
4 + 24 +256 + 512 = 796
小数部分
0.0703125
0*8^-1 + 7*8^-2 + 0*8^-3 + 3* 8^-4 + 1*8^-5 + 1*8^-6 + 2*8^-7 + 5*8^-8=
十进制转换为十六进制
十进制:0123456789
十六进制:0123456789ABCDEF
类似于十进制转换二进制和十进制转换为八进制
十进制转为16进制(整数除以16):
91.876
91
91/16 = 5........11
5/16 = 0.........5
91转换为十六进制5B
0.876转为16进制
0.876*16 = 14.016 ------14
0.016 * 16 = 0.256 ---0
0.256 * 16 = 4.096 -----4
转换后的十六进制0.E04
91.867转换为十六进制为5B.E04
16进制转换为10进制
2a转换为十进制
A * 16^0 + 2 * 16^1 = 42
0.5b转换为十进制
5*16^-1 + 11 *16^-2 =
0.3125 +0.04296875 =
二进制转换为8进制
· 需要了解一个数学关系,即2^3=8,2^4=16,而八进制和十六进制是用这关系衍生而来的,即用三位二进制表示一位八进制,用四位二进制表示一位十六进制数。
· 接着,记住4个数字8、4、2、1(2^3=8、2^2=4、2^1=2、2^0=1)。现在我们来练习二进制与八进制之间的转换。(这段话来自简书的一篇博文:http://www.jianshu.com/p/555cd32e99cc)希望大家也去看看原文,我也是看这篇博文学的进制转换
二进制转换为8进制
· 方法:取三合一法,即从二进制的小数点为分界点,向左(向右)每三位取成一位,接着将这三位二进制按权相加,得到的数就是一位八位二进制数,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的八进制数。
· 如果向左(向右)取三位后,取到最高(最低)位时候,如果无法凑足三位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足三位。
·
作者:MPPC
链接:http://www.jianshu.com/p/555cd32e99cc
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
二进制
11 011.101 111
011 011.101 111
整数部分 =33
1*2^0 + 1*2^1 + 0*2^2 = 3
1 + 2 + 0
1*2^0 + 1*2^1 + 0*2^2 = 3
1 +2 + 0 =
小数部分 =0.57
1*2^0 + 0*2^1 + 1*2^2 = 5
1 + 0 + 4
1*2^0 + 1*2^1 + 1*2^2 = 7
1 +2 + 4 =
011 011.101 111转换为八进制33.57
八进制转换为二进制
33.57
取一分三法,即将一位八进制数分解成三位二进制数,用三位二进制按权相加去凑这位八进制数,小数点位置照旧。
先来看看二进制的规律 111 1*2^0 + 1*2^1 + 1*2 ^2 = 1 + 2 + 4也就是如果数不为0,而为1的时候,则乘以权重可以 等于
第0位 1
第2位 2
第3位 4
33.57
3 ======》 011
3=======》011
5======》101
7=======》 111
所以八进制转换为8进制为 11 011.101 111
二进制与16进制的转换
与二进制与八进制转换相似,只不过是一位(十六)与四位(二进制)的转换
111101.110111
00 11 1101,1101 1100
1*2^0 +1*2^1 + 0*2^2 +0*2^3 =
1 +2 +0 +0 =3
1×2^0 +0*2^1 + 1*2^2 +1×2^3 =
1 + 0 + 4 +8 = 13
整数:3D
小数
1*2^0 +0*2^1 + 1*2^2+ 1*2^3 = 13
1 + 0 + 4 + 8 =
0*2^0 + 0^2^1 + 1*2^2 + 1*2^3 =
0 + 0 + 4 + 8 = 12
小数部分转换为十六进制:DC
111101.110111
转换为十六进制等于3D.DC
十六进制转换为2进制
1111 = 1*2^0 + 1*2^1 + 1*2^2 + 1*2^3 = 1 + 2 +4 +8
取一分四法,即将一位十六进制数分解成四位二进制数,用四位二进制按权相加去凑这位十六进制数,小数点位置照旧。
3D.DC
3 =======>11
D=======>1101
D======>1101
C=====>11
则二进制为:111101,110111
如果有错误,欢迎告知QQ2235577382,谢谢
- 进制的转换,八进制转换十六进制
- 进制的转换
- 进制的转换
- 进制的转换
- 进制的转换
- 进制的转换
- 进制的转换
- 进制的转换
- 进制的转换
- 进制之间的转换
- 进制转换的疑问?
- JAVA的进制转换:
- java进制的转换
- 进制之间的转换
- 各种进制的转换
- 汇编程序的进制转换
- 时间进制的转换
- 进制之间的转换
- 数组数列
- DataGrip真心不好用!
- JavaScript 闭包
- 找合法帧
- SublimeText3安装ColorPicker快捷键无效问题解决
- 进制的转换
- C++中new和delete来创建和释放动态数组
- 句子逆序
- 2017百度之星资格赛 1003 度度熊与邪恶大魔王(DP 完全背包)
- hdu2612-Find a way(两次bfs)
- Java对象克隆——浅克隆和深克隆的区别
- JavaScript typeof, null, 和 undefined
- Python数据类型 之 dict
- 使用impdp方式恢复oracle数据库的shell脚本