我们继续昨天的任务
二进制与十进制之间的转换问题,大家可能会说什么短除法、什么余数倒排
我的方法比较暴力,大家先记住2的0次幂到2的16次幂的结果,具体是多少大家自己算算
1、2、4、8、16、32、64、128、256、512、1024、2046、4092……、65536
没事就算算,还挺好玩的
10011011:这是一个八位的二进制的数,怎么转换成十进制?
先从这一传数字的最左侧开始,第一位数代表2的0次幂,依次向右次幂数增加,那么这个最高次幂是2的7次幂(十进制的128)
凡是有1的地方都是对应数存在的,具体是什么意思呐?
以这个二进制数为例:先将对应的二进制数转换为十进制,再相加。1+2+8+16+128这个式子的和就是我们要计算的十进制数。
是不是很麻烦,为什么不能在计算机中用十进制数,现在请大家想一想计算机的本质是什么?
电路板+软件,有软件控制电路板干活。目前大部分计算机还是这个样的(现在出了一种生物cpu)。电路板有什么特点?是不是只有开和关,两种状态,这是不是就对应着我们刚才说的二进制吗?
我们软件实际上就是通过多个复杂的开和关来控制电路板(就是我们的计算机),当你们研究硬件的适合就会深有体会,这才是计算机底层。
回归正传,byte表示的整数是从几到几?整数有正有负,是不是有两种状态?是不是可以用以为二进制数就可以表示?从右边开始的第一位数,我们把它定义成符号位行不行?专本用于表示正负。一个byte8位,现在还省下7位,这七位就是数值位,是不是可以通过上面的方法计算出来最小值到最大值,这个自己计算一下,先算正数部分,负数部分是采用补码来表示,符号位0表示正数,1表示负数。这里有一个口诀:用于计算补码,取反加一,所以就有-128,这就是最小值,最大值1111111,自己算算?从而计算出范围。是不是有规律?-2^7--2^7-1
自己可以把这个整数型的返回计算出来
浮点型--就是我们说的小数(记住精度有限,有基础的可以看看这个类BigDecimal,这是实际中用的),浮点型是由三部分组成的,符号位、指数位(用于表示整数)、小数位(float精度为7位,double进度为16位)
char:是占两个字节的字符类型,英文的26个字母一个byte就可以表示完,请大家算一下有多少个汉字,1024?是不是远大于这个数,所以一个中文字符要两个字节才能表示
Boolean:什么是布尔,不是真就是假。是不是一个位就能解决这个问题,但是再软件中最小的单位是一个字节,给一个字节就行,这个就关系到jvm了,想探索自己查查
基本类型大致知道是什么了吧?
那么什么时强类型什么是弱类型?强类型语言有哪些?若类型语言有哪些?
强类型就是定义一个变量必须要有类型,让内存知道这个变量占多大的空间,弱类型不用声明变量的类型,编译器/解释器会分配一个固定的大小空间,这是两者之间不同,从效率上强类型远大于弱类型。他们各有千秋吧!
记住变量是程序的灵魂,没有变量就没有真正的程序,这是我老师说的原话。
今天还是来个程序吧
byte a1=1;
short a2=2;
int a3=3;
long a4=4;
float f1=1;
double d1=2;
char s = 'a';
char ss=97;
System.out.println(a1);
System.out.println(a2);
System.out.println(a3);
System.out.println(a4);
System.out.println(f1);
System.out.println(d1);
System.out.println(s);
System.out.println(ss);
大家先看看输出的结果都什么?想想为什么会这么出?先记住都有那几个基本类型,大小多少,具体细节会和运算符一起来
至于写代码的工具我会方法百度网上,想在咱们还用不到工具,再说完jdk与jre咱们就上工具
下一章节:Java代码是怎么执行,jdk是什么?jre是什么?有什么不一样吗?jvm是什么?