Android学习之---(重回Java(02))进制的学习及进制间的转换,二进制、八进制、十进制、十六进制

进制!!!

可能你会好奇,为什么要添加这么多感叹号呢?其实学了程序这么长时间,本编却连进制都一窍不通,我相信应该也不止我一个人,那么这次我们既然开始了重回Java也应该来补习一下这个知识点,可不要被下放的一大堆文字吓到了,讲的已经很通俗了,纯手打,值得一看哦~~~

进制
生活中的计数方式有很多种,比如说星期是7位计数,月是12位,这都是一种计数方式,进制就是演变回来的
那么进制的由来呢,我们偏计算机来说这件事就是:大家早期应该都听说过电信号,电信号很简单就是开关开关开关这两种状态,那么这个电信号我们通过几个开和几个关就能形成一组数据,比如说:开开关开,开关开开,那么通过这些个排列组合,就形成了数据的表现形式,那么这个开关开关用数字来表现就是0和1,0关1开,那么通过0和1不断的排列组合就形成了一些数据,那么计算机也是通过各种不同的开关组合表示了各种各样的数据这就是进制,在内存当中我们可以用数字来表示这些开关,这些数字就是1和0,那么1和0的不同排列组合也会代表一些数据,这个二进制的产生要表示一些数据它有一个基本的规则就是,它由8位或者说8个开关来表示一个最小的单位,叫做字节
十进制:0-9,满10进1
八进制:0-7,满8进1,用0开头表示
十六进制:0-9,A-F,满16进1,用0x开头表示


那么大家会发现,当我们想用2进制来表示数据的时候会很痛苦,我们用开关开关1010这些东西写起来很麻烦,那么早期的那些老美有一个想法,我们能不能让计算机识别那些生活中的事呢,于是他们想了一个办法,他们用1010的那些组合来代表生活中的一些事,比如01011010来代表 A 紧跟着 01110010就代表B它就用这些排列组合把生活中的数据给表示出来了,当我们按键盘A的时候就代表01011010了,后来能表示的东西越来越多的时候,后来就出现了编码表,比如老美所使用的编码表我们称之为ASCII编码表,老美为了表示生活中的一些文字,那么他们就用一些2进制的数据1010来进行一个映射对应,1个文字就对应1010不同的排列组合,最后就形成了编码表,计算机识别中文也是一样,中国这帮哥们也是把这些1010排列组合来代表每一个中文字


时间长了人们发现,以2进制8位来表示一段数据这种表现形式太长了,我们能不能把它们缩短呢?于是人们便想了一个方法,于是便出现了8进制、10进制、16进制,例如16进制就是4位代表一位,8进制就是3位代表一位,如此一来,表示数据就越来越简单了,结论:进制越大,数字的表示越短。例如:随便一个2进制,101010001110这个数对应的八进制就是5216,对应的十进制就是2702,对应的十六进制就是A8E,这里同学们是不是发现了它越来越短了,这就是进制转换的特点,之所以出现8进制、16进制就是为了更方便的表示数据,到此为止,一个数字的表现形式有4中表现形式,二进制、八进制、十进制、十六进制,而且计算机里面无论是什么数据,全是二进制


二进制和十进制之间的转换
十进制—>二进制。6的二进制
原理:对十进制数进行除2运算
如图:在这里插入图片描述
所以结果就是110
不过这种东西大家可以看懂就行,不需要非得自己算,毕竟整天算这个能把自己累坏,Java已经提供了对应的方法能够进行这种运算


二进制—>十进制
原理:二进制乘以2的过程。
拿上面的110来说
根据原理可得:0×2(0)+1×2(1)+1×2(2)
0乘以2的0次幂为0,1乘以2的1次幂为2,1乘以2的2次幂为4,其结果就是0+2+4=6
注:括号中的次幂是依次往后排的,假如说1110这个二进制的话那就应该是0×2(0)+1×2(1)+1×2(2)+1×2(3),0+2+4+8它的十进制也就是14
再来一个数值比较多的
在这里插入图片描述
如图,上面的00110101就是二进制,如果直接按照上面的方式算的话太麻烦了,这里有个简单方法,从最后一个1开始,它下面所对应的那一排就是那样的规律,最终,按照上面和下面相乘再将结果相加,也就是说1×1+0×2+1×4+0×8+1×16+1×32+0×64+0×128=所以对应的十进制就是53,
其实上面那个图,你会发现如果上面的二进制都是1,结果也就是下面的所有数相加你会发现结果是255,同样你也会发现电脑的ip地址最大的数也只能输入255
二进制的加法运算:在这里插入图片描述


二进制转16进制
01011010转为16进制
前面说过16进制是以4为单位,这边咱们为了便于观看学习将它们分开
0101-1010,由此可得
4 1-8 2 ,上面是0的都忽略掉了,因为0乘以任何都为0,这里8+2等于10,但是因为16进制中没有10的概念而对应的是A,所以结果就是5A,又因为16进制的前缀是0x,所以结果为0x5A


二进制转8进制
01011010转换为8进制
由于8进制是以3为位代表1位所以分开应该是01-011-010,因为咱们要从后面开始分割为3位,所以前面就剩下01了不满3位,当然如果你开心可以前面添个0,因为0乘以任何都为0,这里结果就更简单了
001-011-010
1- 21- 2 ,结果是132


负数的二进制表现形式
前面说过6对应的二进制是110
那么-6应该是什么呢,其实就是6的二进制取反+1,具体呢?请看下面:
因为6是一个整数,那么这一个整数你要知道的基本的一点是它其实占了4个字节,它在内存当中其实不是110,而是这样的
0000-0000 0000-0000 0000-0000 0000-0110,因为电脑又32位这个概念,然后再取反也就是1变0,0变1

1111-1111 1111-1111 1111-1111 1111-1001,再+1,二进制的1如下
0000-0000 0000-0000 0000-0000 0000-0001,相加后
1111-1111 1111-1111 1111-1111 1111-1010,为什么最后是1010了呢?因为满2进1,如此便是-6的表现形式

其实计算起来还挺麻烦,在工作中也没有人去整天计算这玩意,因为Java中提供了对应的方法进行转换,很简单,大家自行百度即可,虽然工作中不常用,但是大家也应该对其有一定的了解,当然,大家有什么意见或建议可以在下方进行留言,感谢支持~~~
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值