01【JavaWeb】入门-01进制转换
本系列文章,用于介绍JavaWeb技术栈,本篇为入门第一篇
文章目录
前言
这是一篇有关【JavaWeb】入门-01进制转换的文章,介绍了不同进制转换的笔算方法,浅浅的感受一下计算机对数据的底层处理逻辑。
1.理解进制转换
进制转换是计算机、再深入一点来说,是运算器运行的一个底层原理。这一话题如果展开来讲,在实用性上可能有博士买驴的嫌疑。这一原理的核心可以简理解为开和关,并且将所有的东西都转化为开和关的处理,并通过巧妙的CPU线路设计,让这一转化行为高速而不断重复的产生。个人理解,是冯诺依曼体系结构中对“勤能补拙”的典型体现,意即不断重复,直到完全结束处理。而这种原理后来被专门编制成书《数字电路》
计算机的数字电路是由数字逻辑门组成的,这些门可以执行布尔逻辑运算。数字逻辑门有三种基本类型:与门、或门和非门。这些门可以组合成更复杂的电路,例如加法器和多路选择器。数字电路的主要目的是执行算术和逻辑运算,这些运算是计算机程序的基础。在数字电路中,二进制是最常用的数字系统,因为它只有两个状态,可以用0和1表示。进制转换是将数字从一种进制转换为另一种进制的过程。
2.进制分类
分为,2进一,8进一,10进一,16进一。 以2为基数代表系统是二进制位的,通常用两个不同的符号0,1表示,这也是现代计算机依赖二进制的体现
3.人工进制转换
3.1 二进制进位规则
逢二进一,借一当二。
1.十进制转二进制:除二取余法:
-
55的二进制 00110111 (不够8位进行前补齐)
-
45 —— 00101101
2.十进制转二进制:8421码
- 77 —— 01001101
3. 二进制转十进制: 逐位累加法
01001101=2^6+2^3+2^2+2^0=77
3.2 八进制进位规则
3位二进制代表一个8进制。
1. 十进制转八进制:除8取余
- 99的八进制:99 —— 165 —— 01110101
2. 八进制转二进制:3位组合合并法
000 | 001 | 010 | 011 |
---|---|---|---|
0 | 1 | 2 | 3 |
3.八进制转十进制:逐位累加法
23=2*8^1+3*8^0
3.3 十六进制进位规则
四位二进制代表一位16进制
1.十进制转16进制:除16取余
-
99的16进制: 99—— 63——01100011
-
110的16进制:110 —— 6E —— 01101110
2.十六进制转二进制: 4位拆分法
- 十六制CD的二进制是多少
C D
1100 1101
3. 十六进制转八进制: 3位拆分法
十六制CD的八进制是多少
C D
011 001 101
3 1 5
4. 十六进制转十进制: 逐位累加法
略
4. 补码:CPU只处理补码运算
计算机中三种有符号的表示方法:原码 ,反码,补码
-
符号位采用 0 表示正数,1代表负数
-
正数的补码原码相同
-
补码 = 原码取反+1
-
负数的补码,将原码除符号位以外的所有位取反后加1(0变1 1变0 符号位不变)
5.综合练习
5.1 十进制88的二进制,八进制,十六进制
除制取余法:
- 让88被各制除然后取余至不可再除,最后从底部网上收集各位数
二进制 | 8进制 | 16进制 |
---|---|---|
2 | 88 | 0 2 | 44 | 0 2 | 22 | 0 2 | 11 | 1 2 | 5 | 1 2 | 2 | 0 1 | 8 | 88 | 0 8 | 11 | 3 1 | 16 | 88 | 8 5 |
01011000 | 130 | 58 |
5.2 二进制11 000 101的十进制,八进制
- 二级制转十进制:逐位累计法
- 二进制转八进制:3位组合合并发
11000101的十进 | 11000101 的八进制 |
---|---|
1*20+22+26+27=197 | 011 000 101 3 0 5 |
5.3 八进制137的二进制、十进制
- 八进制转二进制:三位拆分法
- 八进制转十进制:逐位累计法
二进制 | 十进制 |
---|---|
001 011 111 1 3 7 | 7*80+3*8+1*82 |
01011111 | 95 |
5.4 十进制82的十六进制,八进制
- 十进制转16进制:除制取余
- 十进制转8进制:除制取余
16进制 | 8进制 |
---|---|
16 | 82 |2 5 | 8 | 82 | 2 8 | 10 | 2 1 |
52 | 122 |
5.5 负数的补码
-20 的补码是多少 1 1101100 | -36的补码是多少 1 1011100 | -1的补码是多少 1, 1111111 |
---|---|---|
1 0010100 1 1101011 + 1 1 1101100 | 1 0100100 1 1011011 + 1 1 1011100 | 1 00000001 1 11111110 + 1 1, 1111111 |
5.6 负数的二进制
-3的二进制 1 1111101 |
---|
1 0000011 1 1111100 + 1 1 1111101 |
6.Java代码进行转换
在Java中,可以使用Integer类的toBinaryString()方法将十进制数字转换为二进制数字。例如:
int decimalNumber = 10;
String binaryNumber = Integer.toBinaryString(decimalNumber);
System.out.println(binaryNumber); // Output: 1010
同样,可以使用Integer类的toHexString()方法将十进制数字转换为十六进制数字。例如:
int decimalNumber = 255;
String hexNumber = Integer.toHexString(decimalNumber);
System.out.println(hexNumber); // Output: ff
总结
为什么开篇介绍进制转换呢?如今高级编程语言的代码世界里,底层的四大理论《数据结构》、《操作系统》、《计算机组成原理》、《计算机网络》,都已经被封装的极好了。如果不能拥有较高学历,有幸从事教学相关和核心类似算法的相关岗位,而从事大部分偏应用的工作,那么您自入行软件开发之日起,就完全不会再接触任何底层的东西,只需不断接收新技术学习新技术,应用新技术。进制转换是唯一能够证明你还在关注底层的最简单的体现,也是能够牵连着你去品味基础得纽带,属于素质,浅而重!