01【JavaWeb】入门-01进制转换

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位组合合并法

000001010011
0123

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
0101100013058

5.2 二进制11 000 101的十进制,八进制

  • 二级制转十进制:逐位累计法
  • 二进制转八进制:3位组合合并发
11000101的十进11000101 的八进制
1*20+22+26+27=197011 000 101
3 0 5

5.3 八进制137的二进制、十进制

  • 八进制转二进制:三位拆分法
  • 八进制转十进制:逐位累计法
二进制十进制
001  011  111
1   3   7
7*80+3*8+1*82
0101111195

5.4 十进制82的十六进制,八进制

  • 十进制转16进制:除制取余
  • 十进制转8进制:除制取余
16进制8进制
16 | 82 |2
5
8 | 82 | 2
8 | 10 | 2
1
52122

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​

总结

为什么开篇介绍进制转换呢?如今高级编程语言的代码世界里,底层的四大理论《数据结构》、《操作系统》、《计算机组成原理》、《计算机网络》,都已经被封装的极好了。如果不能拥有较高学历,有幸从事教学相关和核心类似算法的相关岗位,而从事大部分偏应用的工作,那么您自入行软件开发之日起,就完全不会再接触任何底层的东西,只需不断接收新技术学习新技术,应用新技术。进制转换是唯一能够证明你还在关注底层的最简单的体现,也是能够牵连着你去品味基础得纽带,属于素质,浅而重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值