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

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);
    }
posted @   张占岭  阅读(271)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
历史上的今天:
2018-05-15 springcloud~配置中心的使用
2018-05-15 springcloud~服务注册与发现Eureka的使用
2014-05-15 MVVM架构~knockoutjs系列之Mapping插件为对象添加ko属性
2012-05-15 Redis学习笔记~Redis提供的五种数据结构
点击右上角即可分享
微信分享提示