最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

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);    }

关键词: