诸如(1234568) 0xFF这类
转载地址:https://blog.csdn.net/iamgamer/article/details/79354617
其中有两个位运算,一个是>>,一个是&。
0xff的作用一:
十六进制0xff的长度是一个字节,即八位,二进制为:1111 1111,那么一个 8bit 数与1111 1111与运算还是这个数本身,但是一个16bit 数与 0xff就被截断了,比如 1100110011001100 & 0xff结果为 11001100。那如果想不被截断怎么办?把0xff扩展为二个字节即:0xffff,那么以此类推,0xffffff,0xffffffff都出来了。
0xff的作用二:
java专属,由于java没有unsigned类型,所以为了适应与其他语言二进制通讯时各种数据的一致性,需要做一些处理。最直观的例子:int a = -127 & 0xFF ; // 等同于 unsigned int c = 129; (这里的-127与129是字节,只为了直观而写的具体数字)这里要严格说明一点:再32位机器上,0xff实际上是 0x00000000 00000000 00000000 11111111,而-127是 11111111 11111111 11111111 10000001 (补码形式), 那么-127 & 0xff的结果自然是00000000 00000000 00000000 10000001 即 129.简而言之,该作用主要是为了将 有符号数转换为无符号数。
>>8的作用:
这个是根据需求而定的,可以是>>8也可以是>>16,>>24,等等而跟
& 0xff运算的意义其实就是截断,将123456的高位右移8位,通过0xff截取出来。实际意义就是取字节,比如一个4字节的数,需要将每个字节内容取出来转换出目标数据,那么通过>> 并且 &0xff 运算 就可以去除想要的部分。再详细点:4字节 ,32 位,按照大端方式排列,
最高位 最低位
11111111 10101010 11000011 10101010
最高位8字节要移到最低位那么,这个8个字节>>(3*8),然后与0xff运算,取出,然后后续得>>(2*8) & 0xff ;>>(1*8) & 0xff,均可取出。再来一个简单的例子巩固基础:
将int a转换成字节,一般情况下,int 4字节,那么需要4个byte来保存,又因为java是大端排序,那么byte[0]为最高位,所以需要>>24,这么一个个的把a的4个字节取出存入byte数组中,这里0xff不仅截断,而且还将有符号转换成了无符号。
那么将字节转换回去就不一样了,不是截断而是融合 ,因此需要将& 改为 |,并且还得把每个字节移到所在实际位置,比如byte[0]是最高位,因此还得将其移到4个字节的头部即需要<<24,那么后续得以此类推。一个完成的int32型就出现了。
但是由于java的原因,再做位移操作之前还是不能少了有符号转无符号操作。
至此,我想读者朋友,你应该完全理解了。
诸如(1234568) 0xFF这类相关推荐
- 解析HTML文件 - 运用SgmlReader类来解析HTML文件
运用.NET Framework类来解析HTML文件.读取数据并不是最容易的.虽然你可以用.NET Framework中的许多类(如StreamReader)来逐行解析文件,但XmlReader提供的 ...
- 基于价值链的流程框架分类_基于价值的类
基于价值链的流程框架分类 在Java 8中,某些类在Javadoc中有一个小注释,说明它们是基于值的类 . 其中包括简短说明的链接,以及有关不使用它们的限制. 这很容易被忽略,如果这样做,则可能会在将 ...
- misc类设备驱动2——misc类设备的简介
以下内容源于朱有鹏嵌入式课程的学习与整理,如有其侵权请告知删除. 一.misc类设备的含义 1.名字含义 misc是英文Miscellaneous的缩写,中文意思是"杂项.混杂", ...
- JVM中篇:字节码与类的加载篇
0.概述 0.1字节码文件的跨平台性 0.1.1.Java语言:跨平台的语言(write once,run anywhere) 当]ava源代码成功编译成字节码后,如果想在不同的平台上面运行,则无须再 ...
- 量子计算机与人脑接口,量子信息科学:量子计算机、隐形传物与人脑量子运算...
原标题:量子信息科学:量子计算机.隐形传物与人脑量子运算 提示: 自然界有三个要素:物质.能量和信息:相应的有三类学科:物质科学.能源科学和信息科学.量子力学的诞生从根本观念上改变了人类对自然的认识, ...
- docker手册_Docker手册
docker手册 The concept of containerization itself is pretty old, but the emergence of the Docker Engin ...
- react中纯函数_如何在纯React中创建电子邮件芯片
react中纯函数 by Andreas Remdt 由Andreas Remdt 如何在纯React中创建电子邮件芯片 (How to create email chips in pure Reac ...
- flutter开发小程序_为什么我认为Flutter是移动应用程序开发的未来
flutter开发小程序 I dabbled a bit in Android and iOS development quite a few years back using Java and Ob ...
- es6 generator_让我们探索一下ES6 Generators
es6 generator by Tiago Lopes Ferreira 由Tiago Lopes Ferreira 让我们探索一下ES6 Generators (Let's explore ES6 ...
最新文章
- 【内存泄露】Memory Leaks 内存优化
- mysql中int时间和datetime时间的互相转换
- 从头开发一个BurpSuite数据收集插件
- 整理下java六种单例模式
- 深入研究Java类加载机制
- Java 如何有效地避免OOM:善于利用软引用和弱引用
- 第三周课程总结及实验报告(一)
- 这两年多我写PHP业务代码的方式是如何进化的
- 服务器屏蔽非法app请求
- python表白代码-表白python代码
- STM32调试MIPI RFFE协议
- Big-Endian Little-Endian
- mysql获取最大天数_mysql如何查询两个日期之间最大的连续登录天数
- python输出课程表
- Linux中编写Shell脚本
- “三天打鱼两天晒网问题
- 简单假币问题以及复杂假币问题
- word文档添加目录
- 【03yy and one】
- CAS - CentOS下部署CAS服务器及简单使用
热门文章
- Xshell 连接服务器失败的解决方法
- 关于Nginx mmap(MAP_ANON|MAP_SHARED, 314572800)报错
- LIN总线开发:智能雨量传感器
- 数据中台的数据仓库和商业智能BI的数据仓库有什么区别?
- 深入探讨IGP协议:OSPF与ISIS的区别(区域类型比较,邻接关系比较,DR和DIS比较,如何计算路由以及性能的比较)
- java实现rabbitmq_RabbitMQ搭建(2)-Java简单实现
- PowerPoint2003常用快捷键
- 渲染图用计算机配置,3d渲图电脑配置清单
- 软件测试工资一般是多少
- 股指指数平稳性检验和随机性检验