java中关于二进制的初步。
2013-08-09 18:04
302 查看
两个int型和一个long型的转换:
long now=1368257088802L;
int low = (int) (0xFFFFFFFFL & now);
int heigh = (int) ((0xFFFFFFFF00000000L & now) >> 32);
System.out.println("long转双int:"+heigh+","+low);
long lowL=low;
long heighL=heigh;
long now2= ((long)lowL & 0xFFFFFFFFl) + (((long)heighL << 32) & 0xFFFFFFFF00000000l);
System.out.println("双int转long:"+now2);
System.out.println("now:"+now);
ByteBuffer buffer= ByteBuffer.allocate(100);
buffer.putLong(now);
buffer.flip();
long three=buffer.getInt();
long four=buffer.getInt();
System.out.println(three+","+four);
long now3=(((three<<32)&0xFFFFFFFF00000000l)+(four& 0xFFFFFFFFl));
System.out.println("高位+低位:"+now3);
Byte aa='\n';
System.out.println(aa);
int value=61156;
ByteBuffer byte_buffer= ByteBuffer.allocate(4);
byte_buffer.putInt(value);
byte_buffer.flip();
byte aa1=byte_buffer.get();
byte aa2=byte_buffer.get();
byte aa3=byte_buffer.get();//大于128的byte的补码为负值,小于128的byte为正值
byte aa4=byte_buffer.get();
System.out.println(aa1+","+aa2+","+aa3+","+aa4);
int test=0;
test+=( aa1<<24 &0xFF000000);
test+=(aa2<<16 &0xFF0000);
// test+=(aa3<<8 & 0xFF00);//一直是正确的
// test+=(aa3 & 0xFF)<<8;//一直是正确的
test+=( aa3 <<8 );//当为负值时,是错误的;只有为正值是才是正确的
test+=( aa4&0xFF) ;
System.out.println(test);
//转换成二进制
System.out.println( Integer.toBinaryString(aa4 ) +","+aa4 );
System.out.println( Integer.toBinaryString(aa4 & 0xFF)+","+(aa4 & 0xFF) );
System.out.println("<---------------------分割线-------------------------->");
int test_byte=129;
byte byte_test=(byte)(test_byte);
System.out.println( Integer.toBinaryString(byte_test ) +","+byte_test );
System.out.println( Integer.toBinaryString(byte_test & 0xFF)+","+(byte_test & 0xFF) );
int temp=1;
if((byte_test & temp)>0)
{
System.out.println("---");
}
System.out.println("<---------------------分割线-------------------------->");
int a_255=128;
byte test_1=(byte)(a_255);
System.out.println("a_255:"+(test_1 &0xFF) );
System.out.println("a_255:"+(test_1 ) );
个人备注:转换后的二进制的表示数值的有效位是一样的,高位是补码的填充。
long now=1368257088802L;
int low = (int) (0xFFFFFFFFL & now);
int heigh = (int) ((0xFFFFFFFF00000000L & now) >> 32);
System.out.println("long转双int:"+heigh+","+low);
long lowL=low;
long heighL=heigh;
long now2= ((long)lowL & 0xFFFFFFFFl) + (((long)heighL << 32) & 0xFFFFFFFF00000000l);
System.out.println("双int转long:"+now2);
System.out.println("now:"+now);
ByteBuffer buffer= ByteBuffer.allocate(100);
buffer.putLong(now);
buffer.flip();
long three=buffer.getInt();
long four=buffer.getInt();
System.out.println(three+","+four);
long now3=(((three<<32)&0xFFFFFFFF00000000l)+(four& 0xFFFFFFFFl));
System.out.println("高位+低位:"+now3);
Byte aa='\n';
System.out.println(aa);
int value=61156;
ByteBuffer byte_buffer= ByteBuffer.allocate(4);
byte_buffer.putInt(value);
byte_buffer.flip();
byte aa1=byte_buffer.get();
byte aa2=byte_buffer.get();
byte aa3=byte_buffer.get();//大于128的byte的补码为负值,小于128的byte为正值
byte aa4=byte_buffer.get();
System.out.println(aa1+","+aa2+","+aa3+","+aa4);
int test=0;
test+=( aa1<<24 &0xFF000000);
test+=(aa2<<16 &0xFF0000);
// test+=(aa3<<8 & 0xFF00);//一直是正确的
// test+=(aa3 & 0xFF)<<8;//一直是正确的
test+=( aa3 <<8 );//当为负值时,是错误的;只有为正值是才是正确的
test+=( aa4&0xFF) ;
System.out.println(test);
//转换成二进制
System.out.println( Integer.toBinaryString(aa4 ) +","+aa4 );
System.out.println( Integer.toBinaryString(aa4 & 0xFF)+","+(aa4 & 0xFF) );
System.out.println("<---------------------分割线-------------------------->");
int test_byte=129;
byte byte_test=(byte)(test_byte);
System.out.println( Integer.toBinaryString(byte_test ) +","+byte_test );
System.out.println( Integer.toBinaryString(byte_test & 0xFF)+","+(byte_test & 0xFF) );
int temp=1;
if((byte_test & temp)>0)
{
System.out.println("---");
}
System.out.println("<---------------------分割线-------------------------->");
int a_255=128;
byte test_1=(byte)(a_255);
System.out.println("a_255:"+(test_1 &0xFF) );
System.out.println("a_255:"+(test_1 ) );
个人备注:转换后的二进制的表示数值的有效位是一样的,高位是补码的填充。
相关文章推荐
- Java关于阶乘和二进制“1”的个数的算法题
- 关于Java+Selenium安装及初步设置
- 关于Java中进程与线程的初步认识与掌握
- 关于此次java作业中C/S架构的初步设想
- 关于Java的二进制输入输出流的一点总结(有错误请指出)
- java中关于二进制文件的读写[二进制文件读写]
- 关于java异常你需要初步了解的东西
- 关于java中二进制最高位的判断
- 在Java中关于二进制、八进制、十六进制的辨析
- 关于部门后端全部转向java前初步设想
- 关于java中的二进制io实例
- 关于java枚举类型的初步了解
- 关于java io知识的初步了解
- Java学习----day4——(1)关于栈内存和堆内存的初步了解
- 关于Java二进制和十六进制转化的一点问题
- 关于二进制的原码,反码和补码的问题初步理解
- 关于部门后端所有转向java前初步设想
- 关于Java Servlet的中文乱码
- 【转发】关于Java性能的9个谬论
- Java中关于==与equals的理解