java二进制的相关基础知识分享

发布时间:2021-09-01 21:40:54 作者:chen
来源:亿速云 阅读:134

本篇内容主要讲解“java二进制的相关基础知识分享”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java二进制的相关基础知识分享”吧!

说明

任何东西都有规范,提到JAVA就会提到2个规范,JAVA语言规范、JVM规范。JAVA语言规范主要定义JAVA的语法、变量、类型、文法等等,JVM规范主要定义Class文件类型、运行时数据、帧栈、虚拟机的启动、虚拟机的指令集等等。

规范中数字的内部表示和存储

JAVA八种基本数据类型:

数据类型所占位数
int32bit
short16bit
long64bit
byte8bit
char16bit
float32bit
double64bit
boolean1bit

备注:1字节=8位(1 byte = 8bit)

java二进制的相关基础知识分享

java二进制的相关基础知识分享

整数的表示

备注:补码的好处:

使用补码可以没有任何歧义的表示0。

补码可以很好的参与二进制的运算,补码相加符号位参与运算,这样就简单很多了。

浮点数表示

在上图中,我们了解到Float与Double都是支持IEEE 754

我们以float来说明:

java二进制的相关基础知识分享

IEEE745单精度浮点格式共32位,包含三个构成字段:23位小数f,8位偏置指数e,1位符号s。将这些字段连续存放在一个32位字里,并对其进行编码。其中0:22位包含23位的小数f; 23:30位包含8位指数e;第31位包含符号s。

java二进制的相关基础知识分享

一个实数V在IEEE 754标准中可以用V=(-1)s×M×2E 的形式表示,说明如下:

符号位指数位小数位
1位8位23位

例如根据IEEE745,计算11000001000100000000000000000000的单精度浮点的值。

解题:

11000001000100000000000000000000
符号位指数尾数由于指数不是全部为0 所以小数位附加1
1100000101.00100000000000000000000
-12^(130-127)(2^0 + 2^-3)

结论:-1 * (2^0 + 2^-3) * 2^(130-127) =-9

同样,你也可以验证一下十进制浮点数0.1的二进制形式是否正确,你会发现,0.1不能表示为有限个二进制位,因此在内存中的表示是舍入(rounding)以后的结果,即 0x3dcccccd, 十进制为0.100000001, 误差0.000000001由此产生了。

进制的概念

我们常用的进制有二进制、八进制、十进制和十六进制,十进制是最主要的表达形式。

二进制是0和1;八进制是0-7;十进制是0-9;十六进制是0-9+A-F(大小写均可)。

位运算符

按位与(&)

两位全为1,结果才为1:

0&0=0;
0&1=0;
1&0=0;
1&1=1;

用法:

例如:设X=1010 1110,取X的低4位,用X & 0000 1111 = 0000 1110 就可以得到。

按位或(|)

只要有一个为1,结果就为1:

0|0=0;
0|1=1;
1|0=1;
1|1=1;

用法:常用来对一个数据的某些位置1;找到一个数,对应X要置1的位,该数的对应位为1,其余位为零。此数与X相或可使X中的某些位置1。

例如:将X=1010 0000 的低四位置1,用X | 0000 1111 =1010 1111 就可以得到。

异或运算(^)
*两个相应位为“异”(值不同),则该位结果为1,否则为0: *

0^0=0;
0^1=1;
1^0=1;
1^1=0;

用法:

取反运算(~)

对于一个二进制数按位取反,即将0变1,1变0: ~1=0; ~0=1;

左移运算(<<)

将一个运算对象的各二进制位全部左移若干位(左边的二进制丢弃,右边补零) 2<<1 = 4 : 10 <<1 =100=4

若左移时舍弃的高位不包括1,则每左移一位,相当于该数乘以2。 -14(二进制:1111 0010)<< 2= (1100 1000) (高位包括1,不符合规则)

右移运算(>>)

将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。操作数每右移一位,相当于该数除以2.

左补0 or 补1 得看被移数是正还是负。

例:4 >> 2 = 1

例:-14(1111 0010) >> 2 = -4 (1111 1100 )

无符号右移运算(>>>)

各个位向右移指定的位数。右移后左边突出的位用零来填充。移出右边的位被丢弃

各个位向右移指定的位数。右移后左边突出的位用零来填充。移出右边的位被丢弃

例如: -14>>>2

即-14(1111 1111 1111 1111 1111 1111 1111 0010)>>> 2

=(0011 1111 1111 1111 1111 1111 1111 1100)

= 1073741820

说明:

到此,相信大家对“java二进制的相关基础知识分享”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

推荐阅读:
  1. java相关面试的基础知识
  2. web前端教程分享JS基础知识

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:JVM的类加载过程以及双亲委派模型详细介绍

下一篇:PHP怎么实现间隔一段时间再执行后续代码

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》