栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java 中 常见& 0xff 的作用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java 中 常见& 0xff 的作用

前言:

&表示按位与,只有两个位同时为1,才能得到1

功能1:取得低八位

通常配合移位操作符>>使用

例如:
int i=0x5566;
int j= i&0xff;//  j=0x0066;
int k= (i>>8)&0xff; //k=0x0055
功能2:保证补码的一致性

此功能往往为byte类型转化为其他类型;出错概率大的功能点
首先需要理解机器码、原码、反码、补码概念
https://blog.csdn.net/jason_lee155/article/details/104059302

例如:
byte b = -127;//1000 0001
int a =  b;   //a = 1000 0000 0000 0000 0000 0000 0111 1111 =-127
a =  b&0xff;  //a = 1000 0001 =129

分析:
规则1:计算机内的存储都是按照补码存储的
           所以:-127补码表示为 1000 0001
规则2:负数是以补码的形式保存,因此带符号右移时>>,高位依次为1,才能保证转换成原码后值不变!
          所以:byte 类型提升为int时候,b的补码提升为 32位,补码的高位补1  1111 1111 1111 1111 1111 1111 1000 0001
规则3:负数的补码转为原码,符号位不变,其他位取反再加1,正数的补码,反码都是本身
      所以:a = 1000 0000 0000 0000 0000 0000 0111 1111
      a = b & 0xff = b&0x000000ff  
      此时b为32位机器码 
      b    = 1111 1111 1111 1111 1111 1111 1000 0001
      0x00ff = 0000 0000 0000 0000 0000 0000 1111 1111
      &之后 a = 0000 0000 0000 0000 0000 0000 1000 0001 = 129 
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/673169.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号