java中的字节进制计算和(&)位运算符
1、什么是字节?
字节就是计算机最小的单位!
2、字节和二进制有什么关系?
1个字节就是1bit,1bit就是8位,那么二进制就是8位,类似于(0000 0000),在计算机里只认0和1
类型 | 字节 |
double | 8 |
byte | 1 |
short | 2 |
int | 4 |
long | 8 |
float | 4 |
1个字节是8位、2个字节是16位、4个字节是32位。。。。以此类推!
但是在java中我们大部分都是用int、double、float、String等
我怎么知道int a = 1;二进制等于多少?这个时候就要计算啦。
1/2 在我们看来等于0.5,然而在计算机的二进制看来就是1/2余1,那么为啥会余1呢?因为计算机发现1小于2,然而1怎么能除于2呢,所以它就认为1/2商是0 ,余数是1
1/2 除不尽 余数为:1 二进制:0000 0001
2/2=1 1/2 除不尽 余数:1 余数为:0 二进制:0000 0010
3/2=1 余数:1 1/2 除不尽 余数:1 二进制: 0000 0011
4/2 =2 余 : 0 2/2 =1 余:0 1/2 余:1 二进制:0000 0100
以此类推
记住这个是从后往前看
&运算符是怎么用的?
平常在java中不怎么用,老是突然忘,就记录一下!&运算符是所有为真才为真,只要有一个为假就是假的,而&是位运算,只能用于位运算,是否纳闷啥是位运算?
上面那个(0000 0001)这个就是位,也就是二进制运算
10进制就是我们平常用的,我们写的东西基本上都是10进制的,10位进一位
3&2等于多少?
那我们来计算一下:
十进制代表3: 0000 0011
十进制代表2: 0000 0010
怎么比呢 上下比:
0&0=0
0&0=0
0&0=0
0&0=0
0&0=0
0&0=0
1&1=1
1&0=0
也就是说3&2=00000010
00000010的十进制是多少呢? 上面我们看到了是2,
如果还看不明白,我们就看一个示例图:
正整数的十进制转换二进制
将一个十进制数除以二,得到的商再除以二,依此类推直到商等于一或零时为止,倒取除得的余数,即换算为二进制数的结果。只需记住要点:除二取余,倒序排列。
由于计算机内部表示数的字节单位都是定长的,以2的幂次展开,或者8位,或者16位,或者32位....。于是,一个二进制数用计算机表示时,位数不足2的幂次时,高位上要补足若干个0。本文都以8位为例。
负整数转换成二进制
方法:先是将对应的正整数转换成二进制后,对二进制取反,然后对结果再加一。还以42为例,负整数就是-42,如图4所示为方法解释。最后即为:(-42)10=(11010110)2.
小数转换为二进制的方法:对小数点以后的数乘以2,有一个结果吧,取结果的整数部分(不是1就是0喽),然后再用小数部分再乘以2,再取结果的整数部分……以此类推,直到小数部分为0或者位数已经够了就OK了。然后把取的整数部分按先后次序排列就OK了,就构成了二进制小数部分的序列,举个例子吧,比如0.125,如图5所示。
如果小数的整数部分有大于0的整数时该如何转换呢?如以上整数转换成二进制,小数转换成二进制,然后加在一起就OK了,如图6所示。
转换16进制就跟2进制一样,不过就是除于16
那么怎么转换呢?
二进制转换为十进制
二进制转十进制的转换原理:从二进制的右边第一个数开始,每一个乘以2的n次方,n从0开始,每次递增1。然后得出来的每个数相加即是十进制数。
参考自:https://www.cnblogs.com/xiao-lei/p/10961068.html