首页 > 编程语言 >java~"与运算"实现保留一个数的低8位

java~"与运算"实现保留一个数的低8位

时间:2023-05-15 09:01:16浏览次数:37  
标签:java 运算 二进制 保留 int 0xff 进制

int类型另外介绍

  • int类型的封装类型是Integer类型,它是有符号的类型,即它有负数和正数两部分,最小为-232,最大值是232-1。
  • int类型由32位二进制数组成,每4位二进制数表示为1位16进制数,每8位2进制数占用存储空间为1字节、即每2位16进制也占用1字节
  • 一个int类型的数字,占用32/8=4,占用的存储空间为4个字节
  • 对一个数字n与0xff做与运算,相当于将n的二进制表示的低8位保留下来,并将高24位清零。
  • 0xff(十进制为255)的二进制表示为11111111,它是一个8位二进制数,与任何一个整数做与运算都只能得到这个整数的低8位(即最右边的8位),其余位都会被清零

与运算例子

  • 与运算在计算时,先把10进制转成2进制,再把两个2进制进行与运算,位数不够,在左面补0,两个数位置的数全1则1,有0则0、例如:1&1=1、1&0=0,0&0=0 。
  • 例如,数字128的二进制表示为10000000,如果对它执行128 & 0xff,结果为0x80,与128的二进制表示10000000保留的是最右边的8位,而其余位置0,因此返回的值为0x80。
  • 再比如,数字256的二进制表示为100000000,如果对它执行256 & 0xff,结果为0,与256的二进制表示100000000保留的是最右边的8位,而其余位置0,因此返回的值为0。
  • 这个操作在进行位运算和字节数组处理时经常使用,尤其是在处理有符号和无符号整数的补码表示时,有助于保留整数的正确值。

DataOutputStream中对它的使用

  • & 0xFF 低8位保留,高24位清零
  • 无符号的右移,>>>8表示右移8位,即相当于除以2^8次方

   public final void writeShort(int v) throws IOException {
        out.write((v >>> 8) & 0xFF);
        out.write((v >>> 0) & 0xFF);
        incCount(2);
    }

标签:java,运算,二进制,保留,int,0xff,进制
From: https://www.cnblogs.com/lori/p/17400792.html

相关文章

  • 5种你未必知道的JavaScript和CSS交互的方法
    随着浏览器不断的升级改进,CSS和JavaScript之间的界限越来越模糊。本来它们是负责着完全不同的功能,但最终,它们都属于网页前端技术,它们需要相互密切的合作。我们的网页中都有.js文件和.css文件,但这并不意味着CSS和js是独立不能交互的。下面要讲的这五种JavaScript和CSS共同合作的方......
  • Java多线程笔记
    Java多线程基本概念线程是操作系统能够调度的最小单位,他被包含再进程志宏,是进程中的实际运作单位进程进程是程序的基本执行实体并发和并行并发:在同一时刻,有多个指令在单个CPU上交替执行并行在同一时刻,有多个指令在多个CPU上同时执行多线程的实现方式继承Thread类的方式......
  • Java电影订票管理系统
    电影订票系统主要是为了实现电影院的电影信息能够实时的展现上映电影信息以及对顾客能够根据上映电影进行网上购票支付的系统。一个经典的电影订票系统一般都需要提供良好的交互界面页面,但由于还没有学习前端方面的知识,所以交互仍在控制台中。从功能上来看,需要包括网民可以通过电影......
  • 老杜 JavaWeb 讲解(六) ——Servlet对象的生命周期
    (八)Servlet对象的生命周期对应视频:10-Servlet对象的生命周期8.1什么是Servlet对象生命周期?Servlet对象什么时候被创建。Servlet对象什么时候被销毁。Servlet对象创建了几个?Servlet对象的生命周期表示:一个Servlet对象从出生在最后的死亡,整个过程是怎样的。8.2Servle......
  • java数组
    数组数组是相同类型数据的有序集合数组创建dataType[]arrayName或者dataTypearraName[];效果相同但是前者为首选例如:int[]a=newint[10];//声明+创建分配空间intb[]=newint[10];a[0]=1;//获取数组长度array.length内存分析java内存:堆:存放new的对象和......
  • Errors:java: 程序包org.springframework.stereotype不存在(解决方法)
    错误截图错误描述java:程序包org.springframework.stereotype不存在解决更改maven项目运行时的编译方式为maven找到File->Settings->Maven->Runner,进行勾选......
  • c#轻量级高并发物联网服务器接收程序源码(仅仅是接收硬件数据程序,没有web端,不是java,协
    c#轻量级高并发物联网服务器接收程序源码(仅仅是接收硬件数据程序,没有web端,不是java,协议自己写,如果问及这些问题统统不回复。),对接几万个设备没问题,数据库采用ef6+sqlite,可改ef+MySQL.该程序只是源码使用示例,里面有使用方法,自己研究,难度属中上层不建议新手拿YID:5999612973416375......
  • java中的一点知识
    1importjavax.swing.*;这是java导入包的语法,表示导入swing这个包的所有类和接口swing是图形可视包,导入这个包后才能进行GUI图形化软件的开发import   代表“引入”javax.swing 代表“路径”(在javax文件夹下的swing文件夹)代表“全部”总结:表示引用javax文件夹......
  • C语言整数位运算中的一些技巧
    1与(&)1.与(&)运算实现求余%运算在计算机里整数求余运算比较低效,在对2的整数幂进行求余时,可以使用&来优化如:a对2^n(n为自然数)求余:a%(2^n)=a&((2^n)-1)//如a%4=a&0x3判断奇数偶数时,可以与1相与if(n&0x1==0x1){//printf("n是奇数");......
  • java—获取某月的第一天和最后一天
    //获取给定年、月的第1天LocalDatefirstDay=LocalDate.of(year,month,1);//获取该月的最后1天(https://java2blog.com/last-day-of-month-java)LocalDatelastDay=firstDay.withDayOfMonth(firstDay.getMonth().......