1、进制的概念

进制也就是进位计数制,是人为定义的带进位的计数方法;对于任何一种进制---X进制,就表示每一位置上的数运算时都是逢X进一位

我们日常生活中有很多进制的例子,例如:

2、Java中的进制2.1四种进制

二进制、八进制、十进制、十六进制

2.2进制产生的原因

产生这些进制的原因: 有二进制是因为计算机最底层的电子元器件只有两种状态(高电平/低电平,也就是有电没电)所以任何数据在计算中都是以二进制的形式存在的,二进制早期由电信号开关演变而来,一个整数在内存中一样也是二进制的,但是使用一大串的1和0做成的数值进行使用很麻烦. 有八进制,十六进制的原因是因为二进制表示的同数值太长不方便记忆和阅读,而八进制和十六进制较短,方便阅读记忆

2.3计算机中的存储单位的换算

bit: 二进制的每一位都是一个bit 二进制只能是0/1两个数字组成 是计算机中最小的信号单元也就是一个bit 只能 表示两种信号或两种状态 表示范围很小, 可能是高/低电平 byte: 字节,一个bit表示的范围很小,不够用,字母就有26个,一个bit才能表示2个,除了字母还有很多其他符号呢 -128~127 256 所以国际标准组织规定把8个bit归为一个数据的最小单元! 1位二进制数可以表示两种状态 0 1 2位二进制数可以表示的状态个数就是2的2次幂 4种 00 01 10 11 3位二进制数可以表示的状态个数就是2的3次幂 8种 000 001 010 011 100 101 110 111 8位二进制数可以表示的状态个数就是2的8次幂 256种 也就是1byte代表256种状态 换算方式 8bit=1byte(字节) 1kb = 1024byte KB千字节 2的10次方 1MB = 1024KB MB兆字节 1GB = 1024MB 1TB = 1024GB 16GB的U盘,厂家换算成字节:16*1000*1000*1000,实际上换算:16*1000*1000*1000/1024/1024/1024≈14.9G

2.4不同进制的组成标志

jdk7之后支持 二进制: 由0,1组成 以0b开头 0b11100021 八进制: 由0-7组成 以0开头 十进制: 由0-9组成 整数默认是十进制的没有前后缀 十六进制: 由0-9,A,B,C,D,E,F(大小写都可以)组成 以0x开头 十进制: 10 值:10 二进制: 0b10 值:? 八进制: 010 值: 十六进制:0x10 值: 代码演示: int a=100;//十进制 System.out.println(a); //十进制显示 int b=0b100;//二进制 组成的数字只能出现0/1 System.out.println(b);//十进制显示 int c=0100;//八进制 System.out.println(c);//十进制显示 int d=0x100;//十六进制 System.out.println(d);//十进制显示

2.5相同进制之间的计算

十进制 10 10=20 二进制 0b1101 0b1101010 ---------- 0b1110111 八进制 0127 0765 ---- 01114 十六进制 0x1ab 0x99a ------- a=10 b=11 c=12 d=13 e=14 f=15 0xb45

2.6进制之间的转换2.6.1任意进制到十进制的转换

转换规则:任意进制到十进制的转换都等于: 这个数的各个位上的系数乘以基数的权次幂相加的和

任何除0以外的数的0次方都是1 。如3的0次方是1,-1的0次方也是1,0的0次方没有意义(数学相关)

任意进制到十进制之间的转换 2 8 16进制如何转10进制 前提: 十进制数:157 系数: 每一位上的数字(157 个位上的系数是7,十位上的系数是5,百位上的系数是1) 基数: 几进制基数就是几 (十进制基数就是10 二进制基数就是2) 权: 一个数从右往左数,从0开始,对每一位上的数进行编号,那么这个编号就是这个位置上的数字的权 157 210 权 规律: 任意进制到十进制的转换都等于: 这个数的各个位上的系数乘以基数的权次幂相加的和 十进制:157= (7*10^0) (5*10^1) (1*10^2)=7 50 100 二进制:0b110=(0*2^0) (1*2^1) (1*2^2) =0 2 4=6 八进制:0110=(0*8^0) (1*8^1) (1*8^2) =0 8 64=72 十六进制:0xABC=(C*16^0) (B*16^1) (A*16^2)=12 176 2560=2748 ----------------a=10 b=11 c=12 d=13 e=14 f=15-------------------- //验证: int n=0b110; System.out.println(n);//6 int n2=0110; System.out.println(n2);//72 int n2=0xABC; System.out.println(n2);//2748

2.6.2十进制到任意进制的转换

规则:除以基数取余数,直到商为0,余数反转

十进制到任意进制之间的转换 十进制转换到2 8 16进制 规则: 除以基数取余数 直到商为0 余数反转 十进制:10 "转二进制" 2|10 0 ---- 2|5 1 ---- 2|2 0 --- 2|1 1 ---- 0 结果:二进制的 0b1010 反推 0*2^0 1*2^1 0*2^2 1*2^3=0 2 8=10 "转八进制": 8|10 2 ---- 8|1 1 --- 0 结果:八进制 012 反推: 2*8^0 1*8^1=2 8=10 "转16进制" 16|200 8 ---- 16|12 c=12 ---- 0 结果: 16进制 0xc8 反推 8*16^0 c*16^1=8 192=200 //验证 int a=0b1010;//二进制 System.out.println(a)//十进制显示 int a2=012; System.out.println(a2)//十进制显示 int a3=0xc8; System.out.println(a3)//十进制显示

2.6.3快速进制转换法:8421码

概念:8421码十进制和二进制的快速转换

8421码是中国大陆的叫法,它是BCD码中最常用的一种,这种编码方式中每一位二进制代码的1都是代表一个固定的数值然后把每一位1代表的数的十进制数加起来,得到的结果就是它所代表的十进制数码

BCD码:又叫二进制十进制数(二.十进制代码)

1 8421码规则 二进制 1 1 1 1 1 1 1 1 十进制 128 64 32 16 8 4 2 1 算的方式: 二进制数:11011 如果用公式转十进制数: 1*2^0 1*2^1 0*2^2 1*2^3 1*2^4 = 1 2 0 8 16=27 如果用BCD码转成十进制数: 1 2 0 8 16=27 十进制数:100 转二进制看是哪些数字相加 并且这些数都是2的倍数 100=64 32 4 二进制 1 1 1 1 1 1 1 1 十进制 128 64 32 16 8 4 2 1 64:第七位 32:第六位 4: 第三位 其余位补0 二进制表示 1 1 0 0 1 0 0 2 利用8421码如何快速的二进制转八进制 二进制到八进制3位组合 3 利用8421码如何快速的二进制转十六进制 二进制到十六进制4位组合 案例: 八进制: 10 101 010 21 421 421 2 5 2 (拼接,不是求和) 252 十进制: 1 0 1 0 1 0 1 0 128 64 32 16 8 4 2 1(求和) 128 32 8 2=170 十六进制:1010 1010 8421 8421 10 10 a a (拼接,不是求和)aa

常见的进制对照表:

二进制的基础知识(了解二进制及二进制的概念)(1)

,