Java之进制
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java之进制,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3936字,纯文字阅读大概需要6分钟。
内容图文
![Java之进制](/upload/InfoBanner/zyjiaocheng/854/2a5d00d516c04b56ae10b9c6702c7413.jpg)
1.二进制基础:
在线进制转换工具:https://tool.lu/hexconvert/?
位权:一个数码在不同的位置上所代表的值不同。
2进制:计算机内部用二进制,运算简单,简化了计算机结构。
8进制:0~7,适用于12/36位计算机系统,标志的开头用0表示。
16进制:用0~9,A,B,C,D,E,F(15)表示。表达长度短,标志的开头用0x表示。
二进制位运算:(正数原码、补码、反码相同,负数不同)
&:与运算(两位全为1 结果为1) 6(0000|0110)&3(0000|0011)=2(0000|0010) 可是对数的某些位置0。
|:或运算(只要有1个为1,结果为1) 6(0000|0110)|3(0000|0011)=7(0000|0111) 可以对数的某些位置1。
^:异或运算(1个1 1个0 结果为1) 6(0000|0110)^3(0000|0011)=5(0000|0101) 一个数异或本身得0,用来交换两个变量值。A=A^B B=A^B A=A^B
~:反码(按位取反 0变1 1变0) ~6(0000|0110)=-7(1111|1001->-1得到反码再各位取反->0000|0111->再取负数(-7))
<<:左移(右补0) 3(0000|0011)<<2=12(0000|1100)
>>:右移(左补0,正数左补0,负数左补1,右边丢弃) 3(0000|0011)>>1=1(0000|0001)
>>>:无符号右移(左补0) 3(0000|0011)>>>1=1(0000|0001)
2.补码、反码、原码
在求取一个首位是1的二进制数(即十进制负数)的十进制表示时:
3.JDK内置的进制转换
二进制:0b/0B 八进制:0 十六进制:0x/0X。
System.out.println(Integer.toHexString(20));
// 10进制转换为16进制:14。 16转10:1*16^1+4*16^0=20。
System.out.println(Integer.toBinaryString(12));
// 10进制转换为2进制:1100。2转10:2^3+2^2=12。
System.out.println(Integer.toOctalString(12));
// 10进制转换为8进制:14。 8转10:1*8^1+4*8^0=12。
10进制转其他可以通过除法,采用的是逢2/8/16进1的原则。
System.out.println(Integer.valueOf("FFFF",16).toString());
// 把16进制的FFFF转换为10进制 65535。15*16^3+15*16^2+15*16^1+15*16^0=65535。
System.out.println(Integer.valueOf("0123",8).toString());
// 把8进制的0123转换为10进制 83。 1*8^2+2*8^1+3*8^0=83。
System.out.println(Integer.valueOf("0101",2).toString());
// 把2进制的0101转换为10进制 5。 1*2^2+1*2^0=5。
System.out.println(123);
// 123。打印为十进制数字123。
System.out.println(0b0101);
// 5。打印为十进制数字5。(其中0101是2进制数字,0b标识0101为2进制,并且已将2进制转换为10进制)
System.out.println(0B0101);
// 5。打印为十进制数字5。(其中0101是2进制数字,0B标识0101为2进制,并且已将2进制转换为10进制)
System.out.println(0123);
// 83。打印为十进制数字83。(其中123是8进制数字,0标识123为8进制,并且已将8进制转换为10进制)
System.out.println(0x123);
// 291。打印为十进制数字291。(其中123是16进制数字,0x标识123为16进制,并且已将16进制转换为10进制)
System.out.println(0X123);
// 291。打印为十进制数字291。(其中123是16进制数字,0X标识123为16进制,并且已将16进制转换为10进制)
4.Java字节数组和二进制
进制转换和位操作一般用于:
文件读写,java文件编译成字节码,可以在多个平台上运行(跨平台)
数据通信,将信息转换为底层二进制,序列化和反序列化。
字节数组有关:
public class JavaTest {
???public static int byteToInt(byte[] b){
??????
int arr = 0;
??????int r = 0;
??????for(int i = 0; i < b.length; i++){
??????????arr = (int)((b[i] & 0xff) << i*8);//?左移
??????????r = r+ arr;
??????}
??????return r;
???}
???public static byte[] intToByte(int id){
??????byte[] arr = new byte[4];
??????for(int i = 0; i < arr.length; i++){
?????????arr[i] = (byte)((id >> i*8) & 0xff);
??????}
??????return arr;
???}
???
???public static void main(String[] args) {
??????byte[] b = Java进制.intToByte(8143);
??????System.out.println(b[0]+" "+b[1]+" "+b[2]+" "+b[3]);// -49 31 0 0。
??????System.out.println(Java进制.byteToInt(b));// 8143。
??????
??????String a = new String("一定要成功");
??????byte[] arr = a.getBytes();// 字符串转字节数组。
??????System.out.println(arr);// 字节数组的toString()。[B@50cbc42f。
??????for(byte b0 : arr){
?????????System.out.print(b0+" ");
// 字符串转成的字节数组值。-28 -72 -128 -27 -82 -102 -24 -90 -127 -26 -120 -112 -27 -118 -97
??????}
??????System.out.println("\n"+new String(arr));// 字节数组转字符串。 一定要成功。
???}
}
内容总结
以上是互联网集市为您收集整理的Java之进制全部内容,希望文章能够帮你解决Java之进制所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。