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);
}
分类:
Java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享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提供的五种数据结构