-
按位与&:①清零 ②取数中指定位 按位或|:取数中指定位为1 按位异或^:①使指定位翻转 ②使保留原值 ③交换数值 取反运算~:0换位1,1换位0 位移运算注意:java语言中整型32位查看全部
-
异或实现两个变量交换值查看全部
-
进制转换间的总结查看全部
-
JAVA内置的进制转换查看全部
-
进制的换算查看全部
-
十进制转二进制查看全部
-
二进制转十进制查看全部
-
http://www.cnblogs.com/think-in-java/p/5527389.html byte不一定需要 & 0xff。而是byte类型转换为int类型,希望保证低8bit数据一致,高24bit为0时要 & 0xff。 其实是从数字类型扩展到较宽的类型(向上转型)时,补零扩展还是补符号位扩展。 这是因为Java中只有有符号数,当byte扩展到short, int时,即正数都一样,因为符号位是0,所以无论如何都是补零扩展;但负数补零扩展和按符号位扩展结果完全不同。 补符号数,原数值不变。 补零时,相当于把有符号数看成无符号数,比如-127 = 0x81,看成无符号数就是129, 256 + (- 127) 对于有符号数,从小扩展大时,需要用 & 0xff这样方式来确保是按补零扩展。 而向下转型处理,符号位自动无效,所以不用处理。 在byte向int扩展的时候,自动转型是按符号位扩展的,这样子能保证十进制的数值不会变化,而&0xff是补0扩展的,这样子能保证二进制存储的一致性,但是十进制数值已经发生变化了。也就是说按符号位扩展能保证十进制数值不变,补0扩展能保证二进制存储不会变。而正数可以说是既按符号位扩展,又是补0扩展,所以在二进制存储和十进制数值上都能保证一致。查看全部
-
字符串->字节数组 String s;byte[] bs=s.getBytes(); 字节数组->字符串 byte[] bs=new byte[int]; String s=new String(bs);或 String s=new String(bs,encode);//encode指编码方式"gb2312,utf-8"查看全部
-
java中的基本数据类型: int数据类型有:byte(8bit,-128~127)、short(16bit)、int(32bit)、long(64bit) float数据类型有:单精度(32bit float)、双精度(64bit double) boolean类型变量取值有:true、false,1bit char数据类型有:unicode字符16位查看全部
-
负数以其正值的补码形式表示查看全部
-
负数以其正值得不嘛形式表示。查看全部
-
二进制位运算。查看全部
-
arr[0]=(byte)((int)(id>>0*8)&0xff); 0xff二进制为1111 1111 ,十进制为255. 十六进制中,用从0-9表示数字的0-9,用A-F表示十进制的10-15 所以F就是十进制的15,化成二进制的就是1111 = 2^3 + 2^2 + 2^1 + 2^0 = 15 byte类型8位,int类型32位,为了避免数据转换错误,通过 & 0xff将高24位清零 java中不超过int的取值范围的数据类型,都会提升为int的,直接arr[0]=(byte)(id>>0*8&0xff) 不可以吗? 可以,应该只是为了严谨。查看全部
-
字符串 ---> 字节数组 String s; byte[] bs = s.getBytes([encode]);//encode指编码方式,可选 字节数组 ---> 字符串 byte[] bs = new byte[int];//创建一个长度为int的字节数组 String s = new String(bs);或 String s = new String(bs,encode);//encode指编码方式 "gb2312,utf-8"查看全部
举报
0/150
提交
取消