当前位置: 首页 > news >正文

java中的位运算符

在Java语言中,提供了7种位运算符,分别是按位与(&)、按位或(|)、按位异或(^)、取反(~)、左移(<<)、带符号右移(>>)和无符号右移(>>>)。

位运算符是对long、int、short、byte和char这5种类型的数据进行运算的,我们不能对double、float和boolean进行位运算操作。

byte a = 10;

a & (byte )0xFF: 结果就是a的值。

a | (byte )0xFF: 结果就是255的值。

a & (byte )0x00: 结果就是0的值。

a | (byte )0x00: 结果就是a的值。

Java 如何判定字节变量a是否符合某个指定的格式,如:0xxxxxxx,110xxxxx,1110xxxx,11110xxx,10xxxxxx。

确定指定位置为0是否符合格式的方法:将指定格式中的x和1都用0替换,0用1替换,得到的字节b与a变量进行与运算,如果结果为0,则说明a变量的补码中的0是符合格式的,但1不一定。

如果(a & (byte)0x80) == 0 为true,则a符合0xxxxxxx格式。(b=(byte)0x80)

如果(a & (byte)0x40) == 0 为true,则a符合x0xxxxxx格式。

如果(a & (byte)0x20) == 0 为true,则a符合xx0xxxxx格式。

如果(a & (byte)0x10) == 0 为true,则a符合xxx0xxxx格式。

如果(a & (byte)0x08) == 0 为true,则a符合xxxx0xxx格式。

确定指定位置为1是否符合格式的方法:将指定格式中的x都用0替换,原来的0和1保持不变,得到的字节b与a变量进行与运算,如果结果为b,则说明a变量的补码中的1是符合格式的,但0不一定。

如果(a & (byte)0x80) == (byte)0x80 为true,则a符合1xxxxxxx格式。

如果(a & (byte)0xC0) == (byte)0xC0为true,则a符合11xxxxxx格式。

如果(a & (byte)0xE0) == (byte)0xE0 为true,则a符合111xxxxx格式。

如果(a & (byte)0xF0) == (byte)0xF0 为true,则a符合1111xxxx格式。

如果(a & (byte)0xF8) == (byte)0xF8 为true,则a符合11111xxx格式。

必须同时满足0和1位置都符合,才可以确定变量a是符合指定格式的。

相关文章:

  • 二十、解释器模式 ( Interpreter Pattern )
  • SpringMVC视图视图控制器
  • 怎么把两个PDF合并成一个?这几种操作轻松合并
  • 微信小程序——视图与逻辑,页面导航(导航到 tabBar 页面,导航到非 tabBar 页面)
  • 系分 - 案例分析 - 项目管理
  • 产品---竞品分析
  • 第九届蓝桥杯省赛 C++ A组 - 付账问题
  • 从汇编的角度了解C++原理——类的储存结构和函数调用
  • 双向bfs-字串变换
  • 软考报名有没有学历要求?2023年软考报名条件分享
  • linux下调节GPU的功率限制
  • 冥想第六百七十五天
  • 牛客竞赛每日俩题 - 动态规划4
  • python 列表生成式
  • MongoDB面试题整理-四年经验
  • 机器学习笔记之深度玻尔兹曼机(一)玻尔兹曼机系列整体介绍
  • 【Linux】探索缓冲区的概念 | Git 三板斧 | 实现简易进度条
  • JS语言基础
  • 详解分布式系统核心概念——CAP、CP和AP
  • 【JavaEE初阶】第二节.进程篇