代码解析:

注意这里b[ i ] & 0xFF将一个byte和 0xFF进行了与运算。

b[ i ] & 0xFF运算后得出的仍然是个int,那么为何要和 0xFF进行与运算呢?直接 Integer.toHexString(b[ i ]);

将byte强转为int不行吗?答案是不行的.

其原因在于:

1.byte的大小为8bits而int的大小为32bits

2.java的二进制采用的是补码形式

byte是一个字节保存的,有8个位,即8个0、1。

8位的第一个位是符号位,

也就是说0000 0001代表的是数字1

1000 0000代表的就是-1

所以正数最大位0111 1111,也就是数字127

负数最大为1111 1111,也就是数字-128

上面说的是二进制原码,但是在java中采用的是补码的形式,

java中的數值是int,所以0xFF是int,而byte是有符號數,int亦然,直接由byte升為int,符號自動擴展,

而進行了& 0xFF後,就把符號問題忽略掉了,將byte以純0/1地引用其內容,所以要0xFF,不是多餘的,

你用一些Stream讀取文件的byte就知道了,我昨天搞了一天,就不明白為什麼讀出來的數某些byte會

在移位後錯誤的,就是因為這個原因.

把number转换为二进制,只取最低的8位(bit)。因为0xff二进制就是1111 1111

& 运算是,如果对应的两个bit都是1,则那个bit结果为1,否则为0.

比如 1010 & 1101 = 1000 (二进制)

由于0xff最低的8位是1,因此number中低8位中的&之后,如果原来是1,结果还是1,原来是0,结果位还

是0.高于8位的,0xff都是0,所以无论是0还是1,结果都是0.

java 0xff是什么意思_Java中为何与0xff进行与运算相关推荐

  1. java boolean几个字节_Java中boolean类型到底占用多少个字节?

    1.时间:2017-07-03 07:37:06YuanMxy 2.问题描述:今天在复习java基础的时候发现一小问题,Java中boolean类型到底占用多少个字节? 3.问题解答: (1)什么是b ...

  2. java 基本类型的引用_Java中的基本数据类型与引用数据类型

    一.基本数据类型 byte.short.int.long(整数类型) float.double(浮点数类型) char(字符型) boolean(布尔类型 ) Java数据大多数存放在堆栈中.栈区:存 ...

  3. java常见的报错_Java中常见的错误有哪些?

    原标题:Java中常见的错误有哪些? 1.java.lang.Error 错误.是所有错误的基类,用于标识严重的程序运行问题.这些问题通常描述一些不应被应用程序捕获的反常情况. 原因: 1.对系统所访 ...

  4. java i 线程不安全_java中的++i是线程安全的吗?

    java中的++i是线程安全的吗?为什么?怎么使它线程安全呢? 先说答案: 非线程安全 先说下为什么是非线程安全的? 从Java内存模型说起 Java内存模型规定了所有的便利都存储在主内存中,每个线程 ...

  5. java原始类型和引用类型_Java中的8种原始类型

    java原始类型和引用类型 几年前,当我开始编辑Java Basics系列时,我认为将一些非常详细的信息拉到自己的帖子中是很有意义的. 这样,初学者的内容就更容易消化了. 首先,我将介绍有关Java的 ...

  6. java如何使截取字符串_java中如何截取字符串中的指定一部分

    java中如何截取字符串中的指定一部分 关注:136  答案:4  mip版 解决时间 2021-02-06 13:27 提问者妳涐執唸汰深 2021-02-06 08:56 精选 比如 F:\wor ...

  7. 随机数在java 自旋锁的运用_Java 中自旋锁的实现

    Java中初始是使用mutex互斥锁,因为互斥锁是会线程等待挂起,而对获取锁后的操作时间比较短暂的应用场景来说,这样的锁会让竞争锁的线程不停的park,unpark 的操作,这样的系统的调用性能是非常 ...

  8. java swap函数的包_java中swap函数

    ? ? ? 第1章 第2章 第3章 第4章 java语言概述 Java语言基础 对象与类 ...("swap方法里,a的值是" + a + ";b的值 是" + ...

  9. java截取字符串的一部分_java中如何截取字符串中的指定一部分

    展开全部 java用substring函数截取string中一段字符串 在String中有两个substring()函数,如下: 一:String.substring(int start) 参数: s ...

最新文章

  1. 双屏全屏跳回到主屏_双屏双倍乐趣?华硕灵耀X2 Duo笔记本评测
  2. Linux 下的动态库、静态库与环境变量
  3. C++ STL容器总结之vector(超详细版)
  4. 导致散户亏损的三大根源
  5. AjaxJson笔记(1)
  6. spray.json.JsonParser$ParsingException: Unexpected end-of-input at input index
  7. python面向对象编程138讲_Python面向对象编程简单讲解
  8. RewriteCond 详解
  9. 【网络安全工程师面试合集】——什么是IP安全 IPsec
  10. [asp.net mvc]自定义filter
  11. 当head遇上runat=server之后发生的纠结之事
  12. ROS的学习(三)创建一个工作空间
  13. Android音量调节
  14. man时括号里的数字是啥意思
  15. 1060 Are They Equal (25 分)科学计数法,stl中string的各种函数用法
  16. python语言程序设计袁方答案_北邮“爱课堂”教学平台
  17. vue ie8 兼容方案
  18. Pytorch-> pack_padded_sequence()和pad_packed_sequence()
  19. Hadoop安装snappy(编译源码)
  20. C# 获取图片,Pdf中的文字

热门文章

  1. [0CTF 2016] piapiapia
  2. 解决mfc140u.dll文件在Windows找不到
  3. 基于LLVM的编译原理简明教程: 写一个自己的编译器​
  4. 云会议发展势如破竹 谁会成为最大赢家
  5. 笔记本wifi与台式机、内网服务器共网、共享wifi详细教程
  6. 什么是EI-EI检索是什么意思?
  7. Operating System Not Found解决方案
  8. python怎么玩_怎么用Python玩GTA5?跟着教程玩!
  9. dw本地服务器文件夹,dw设置本地服务器
  10. NodeJS 响应式故宫文化宣传网站计算机毕设源码61557