进制的由来
-- 对于整数,有四重表现形式:
*** 二进制:0和1,满2进1.
*** 八进制:0-7,满8进1,用0开头表示。《八进制数,其实就是二进制位的 3个二进制位 为一个八进制位》111=7
例:
010-101-110
2 5 6 =八进制数:0256
*** 十进制:0-9,满10进1。
*** 十六进制:0-9,A-F,满16进1,用0x开头表示。《十六进制,其实就是二进制中的四个二进制位为一个十六进制位》1111=15
例:
1010-1110
10 14 =十六进制数:0xAE
byte 个字节=8个二进制位 = 8个bit
1k =1024 个字节
-- 负数二进制的转换:
*** 其实就是这个数,的正数的二进制取反,加1.
例:-6
6的二进制 0000-0110
取反 1111-1001
加1 +0000-0001
=1111-1010
-6
负数的二进制的最高位是1.
-- 在程序中找到一个数的十六进制的表示:
《要用num十六进制的表示法与1111比较《就是15》, 4个二进制位进行比较 ,num再右移4位进行比较《就是num>>>4》》
1.2.3.4.5.6.7.8.9.A .B .C .D .E .F
1.2.3.4.5.6.7.8.9.10.11.12.13.14.15
例:
import java.util.Scanner;
public class ShiLiouJinZhi {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
ShiLiouJinZhi shi = new ShiLiouJinZhi();
System.out.print("请输入一个整数:");
int num =in.nextInt();
shi.show(num);
}
//查表法
public static void show(int num){
//不满足条件就返回
if(num==0){
return;
}
//定义一个对应关系表
char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
//查表会查到比较多的数据,数据一多,就先存起来,再进行操作,定义一个数组。
char[] arr = new char[8];
int index = arr.length; //存储的下标初始化
while(num!=0){
int temp = num & 15; //15二进制表示:1111
arr[--index] =chs[temp]; //下标减减逆序存储
num = num >>> 4; //num再右移4位再进行比较
}
//观察index的值
System.out.println("index="+index);
// 输出最终值
for(int i = index;i<arr.length;i++){
System.out.print(arr[i]);
}
}
}
-- 对于整数,有四重表现形式:
*** 二进制:0和1,满2进1.
*** 八进制:0-7,满8进1,用0开头表示。《八进制数,其实就是二进制位的 3个二进制位 为一个八进制位》111=7
例:
010-101-110
2 5 6 =八进制数:0256
*** 十进制:0-9,满10进1。
*** 十六进制:0-9,A-F,满16进1,用0x开头表示。《十六进制,其实就是二进制中的四个二进制位为一个十六进制位》1111=15
例:
1010-1110
10 14 =十六进制数:0xAE
byte 个字节=8个二进制位 = 8个bit
1k =1024 个字节
-- 负数二进制的转换:
*** 其实就是这个数,的正数的二进制取反,加1.
例:-6
6的二进制 0000-0110
取反 1111-1001
加1 +0000-0001
=1111-1010
-6
负数的二进制的最高位是1.
-- 在程序中找到一个数的十六进制的表示:
《要用num十六进制的表示法与1111比较《就是15》, 4个二进制位进行比较 ,num再右移4位进行比较《就是num>>>4》》
1.2.3.4.5.6.7.8.9.A .B .C .D .E .F
1.2.3.4.5.6.7.8.9.10.11.12.13.14.15
例:
import java.util.Scanner;
public class ShiLiouJinZhi {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
ShiLiouJinZhi shi = new ShiLiouJinZhi();
System.out.print("请输入一个整数:");
int num =in.nextInt();
shi.show(num);
}
//查表法
public static void show(int num){
//不满足条件就返回
if(num==0){
return;
}
//定义一个对应关系表
char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
//查表会查到比较多的数据,数据一多,就先存起来,再进行操作,定义一个数组。
char[] arr = new char[8];
int index = arr.length; //存储的下标初始化
while(num!=0){
int temp = num & 15; //15二进制表示:1111
arr[--index] =chs[temp]; //下标减减逆序存储
num = num >>> 4; //num再右移4位再进行比较
}
//观察index的值
System.out.println("index="+index);
// 输出最终值
for(int i = index;i<arr.length;i++){
System.out.print(arr[i]);
}
}
}