原文地址:http://blog.csdn.net/qq_33271612/article/details/50866232
二进制与进制转换
二进制常用的运算 :
按位与(&)
按位或(|)
异或运算(^)
取反运算(~)
左移运算(<<)
右移运算(>>)
无符号右移运算(>>>)
JDK内置的进制转换
十进制转成十六进制 | Integer.toHexString(int i) |
十进制转成八进制 | Integer.toOctalString(int i) |
十进制转成二进制 | Integer.toBinaryString(int i) |
十六进制转成十进制 | Integer.valueOf(“FFFF”,16).toString() |
八进制转成十进制 | Integer.valueOf(“376”,8).toString() |
二进制转成十进制 | Integer.valueOf(“0101”,2).toString() |
Java中的进制
Java平时开发中“进制转换”和“位操作”用的不多,Java处理的是高层;
在跨平台中用的较多,如:文件读写,数据通信.
Java中基本类型:
int数据类型:byte(8bit ,-128~127) short(16 bit) int(32 bit) long(64 bit)
float数据类型: 单精度(32 bit float)、双精度(64 bit double)
boolean类型: true false
char数据类型:unicode字符(16位)
对应的类类型:
Integer、Float、Boolean、Character、Double、Short、Byte、Long
数据类型转化成字节:
8143(0000 0000 0000 0000 0001 1111 1100 1111) => byte[] b =[-49,31,0,0]
第一个(低端)字节:8143>>08 & 0xff =(1100 1111)= 207(或有符号的-49)
第二个(低端)字节:8143>>18 & 0xff =(0001 1111)= 31
第三个(低端)字节:8143>>28 & 0xff =(0000 0000)= 0
第三个(低端)字节:8143>>28 & 0xff =(0000 0000)= 0
PS:
小端法(Little-Endian):低位字节排放在内存的低地址端即该值的起始地址,高位字节排放在内存的高地址端
大端发(Big-Endian):高位字节排放在内存的低地址端即该值的起始地址,低位字节排放在内存的高地址端
例如:
32bit宽的数0x12 34 56 78
在Little-endian模式CPU内存中存放的存放方式(假设从地址0x4000开始存放)为:
而在Big-endian模式CPU内存中的存放方式则为:
字符串->字节数组
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”