可能是最通俗易懂的 Java 位操作运算讲解

Java 位操作这是一项很基础很基础的知识内容,在所有 Android 和 Java 开发者的学习之路上,大家都接触过,但是实际运用的场景却很少见,很多人估计都忘记有这个知识点了。事实上,在 C/C++ 开发领域因为与硬件的联系更紧密,所以位操作运算应用的更普遍。Java 因为面向对象的特性很多时候不需要接触位操作,但是在某些特定场景下,巧妙运用位操作,能够起到非常高效的的表现。这篇博文不谈应用,只详细讲解与位操作有关的知识点。

基础大讲堂

所有数值都是2进制

软件开发者都知道 10 进制、16 进制、8 进制。
比如数字 10 的各位进制形式表现如下。

十进制:10
八进制:012
十六进制:0x0a
二进制:1010

我们可以打开系统的自带的计算器(Win键 + R –> 输入 CMD 打开命令行窗口 –> calc 按回车),看看上面的结论。
这里写图片描述

虽然有很多种进制,但是实际上计算机所认识的数据只有 0 和 1,因此所有的数值不管它是十进制、十六进制也好都会统统在底层被翻译成二进制数值。

int a = 5;
//0101 就是 a 的二进制表示。  

int b = 520;
//1000001000 就是 b 的二进制表示

bit、byte、world

  1. bit (位) bit 电脑记忆体中最小的单位,在二进位电脑系统中,每一 bit 可以代表 0 或 1 的数位讯号。所以它能表示的数字范围就是 0 ~ 1。
  2. byte (字节) 一个 byte 由 8 bit 组成,所以理论上一个 byte 能表示的数据范围是 0 ~ 255。
  3. word (字) 一个 word 由 2 byte 组成,所以理论上一个 word 能表示的数据范围是 0 ~ 65535。

大家可以看这张图加深下理解。
这里写图片描述

32 位与 64 位操作系统。

一般计算机设备上,CPU 主要有 32 位和 64 位(当然,单片机有 8 位和 16 位),32 位 CPU 能够寻址的范围是 4 GB。所以过去的电脑设备内存最高一般只能到达 4 GB。后来,随着芯片技术的发展,越来越多的机器采用了 64 位 CPU。这使得机器的最大内存可以为 16 GB。

那么好,我们再来谈谈 32 位操作系统与 64 位操作系统。实际上它们分别是针对 CPU 类型设计的软件系统。

32 bit 是 4 byte。通常一条 CPU 指令是 4 byte。在 32 位操作系统上,如果一条 CPU 指令是 4 byte,那么 CPU 执行一次能够读取 32 bit 内容,所以一个指令周期内就能够完成指令,如果一条 CPU 指令是 8 byte 的话,那么 32 位操作系统就需要通过 2 个指令周期才能完成指令的读取,而对应的 64 位操作系统因为一次能够读取 64 bit 内容,所以它在一个指令周期就能够读取指令。所以,理论上,64 位的操作系统是要比 32 位操作系统要快 1 倍。

但还有几个需要大家注意的地方是:
1. 64 位 CPU 机器可以安装 32 位操作系统,但效率自然跟 32 位操作系统一样。
2. 32 位 CPU 机器也可以安装 64 位操作系统。
3. 64 位 CPU 机器安装 64 位操作系统才最有效率,但跟软件优化也有关系。

不同的操作系统平台,给 C/C++ 基本数据类型变量分配的字节是不一样的。

32位编译器:

  char :1个字节
  char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)
  short int : 2个字节
  int:  4个字节
  unsigned int : 4个字节
  • 26
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

frank909

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值