黑马程序员技术交流社区
标题:
byte转换int时为何与0xff进行与运算
[打印本页]
作者:
zhouxp3323
时间:
2012-4-3 16:30
标题:
byte转换int时为何与0xff进行与运算
byte b = -3; 将b转换为int类型时,为何会是进行 int i = b&xxff 操作呢
作者:
yangshang1
时间:
2012-4-3 20:50
public class TestTreeSet {
public static void main(String[] args) {
byte b=-1;
int a=b;
String c=Integer.toBinaryString(a);
System.out.println(c);
}
}
输出11111111111111111111111111111111
public class TestTreeSet {
public static void main(String[] args) {
byte b=-1;
int a=b&255;
String c=Integer.toBinaryString(a);
System.out.println(c);
}
}
输出11111111
在byte类型转向int型是前三字节补1
加上&255前三字节补0
作者:
niceBoy
时间:
2012-4-3 21:25
&0xFF 其实就是取二进制的最低8位
byte是8位么
作者:
葛尧
时间:
2012-4-3 21:35
&FF 感觉像是单纯的字节扩容。
byte 占一个字节。 存 -3 的二进制表现形式是1111-1101
int 占四个字节。 普通赋值或者强转 都会自动根据符号位填充0 or 1 所以转换结果为1111-1111 1111-1111 1111-1111 1111-1101
而进行&FF操作就是 最低8位(一个字节)不变 前面24位都强制扩充为0。 0xff默认是int型的 也就是0000-0000 0000-0000 0000-0000 1111-1111
具体为啥要这么搞,应该是有一定应用的,试情景而定吧。
作者:
葛尧
时间:
2012-4-3 21:35
&FF 感觉像是单纯的字节扩容。
byte 占一个字节。 存 -3 的二进制表现形式是1111-1101
int 占四个字节。 普通赋值或者强转 都会自动根据符号位填充0 or 1 所以转换结果为1111-1111 1111-1111 1111-1111 1111-1101
而进行&FF操作就是 最低8位(一个字节)不变 前面24位都强制扩充为0。 0xff默认是int型的 也就是0000-0000 0000-0000 0000-0000 1111-1111
具体为啥要这么搞,应该是有一定应用的,试情景而定吧。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2