【2023,学点儿新Java-38】常见进制间的转换(以二、八、十六、十进制为主)| 二进制的由来 | 正数&负数的原码、补码、反码 | 一个字节可以存储的整数范围是多少?| 莫尔斯电码 介绍

前情提要:

  • 【2023,学点儿新Java-37】计算机底层数据存储(科普)| 云存储 | 静态RAM、动态RAM及其特点 | 主存储器在断电后数据会丢失吗?| 二进制系统 | 字节 | CPU 数据和指令
  • 【2023,学点儿新Java-36】练习:String是基本数据类型吗?| 基本数据类型与String的运算 | 连接运算“+” | String类型可以通过强制类型()转换 转为其他的类型吗?
  • 【2023,学点儿新Java-35】强制类型转换的执行时机、风险与安全 | 基本类型转换、引用类型转换
  • 更多系列文章,可参阅本专栏或博主主页哦~

 
成功的人不是赢在起点,而是赢在转折点。

 

作者主页: 追光者♂

        

个人简介:
 
[1] 计算机专业硕士研究生
 
[2] 2022年度博客之星人工智能领域TOP4
 
[3] 阿里云社区特邀专家博主
 
[4] CSDN-人工智能领域优质创作者
 
[5] 预期2023年10月份 · 准CSDN博客专家  
 

  • 无限进步,一起追光!!!

        

感谢大家 点赞  收藏⭐   留言!!!

        

本篇介绍在计算机的世界中——进制间的转换。首先给出了常见数字的二、八、十六与十进制之间的转换关系,然后补充了在科学史/历史上 二进制的由来(这部分知识了解即可,当做科普),并补充了关于“莫尔斯电码”的小知识。随后介绍了 二进制到十进制的转换规则 以及原码 反码 补码的相关知识(更多的进制转换,将在后续文章中继续向大家介绍~)。

目录

  • 一、进制(补充)
    • 1.1 进制的换算举例
    • 1.2 补充知识——二进制的由来
      • 1.2.1 了解(二进制的由来)
      • 1.2.2 概述(简洁版~)
      • 1.2.3 补充了解——莫尔斯电码
  • 二、进制间的转换规则
    • 2.1 二进制 --->> 十进制
    • 2.2 注:更多进制转换,将在后面继续介绍。
    • 2.3 原码、反码、补码 相关知识补充

一、进制(补充)

1.1 进制的换算举例

下面我列举了一些常用数字的进制,主要是十进制、二进制、八进制以及十六进制。都是一个一个敲的,各位可以检查一下哦~

十进制 二进制 八进制 十六进制
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 a或A
11 1011 13 b或B
12 1100 14 c或C
13 1101 15 d或D
14 1110 16 e或E
15 1111 17 f或F
16 10000 20 10

1.2 补充知识——二进制的由来

1.2.1 了解(二进制的由来)

二进制的由来可以追溯到古代的数学和计数系统。人类最早使用的计数系统是指位计数法(指幂法),它以位置的不同表示不同的数值。古代的巴比伦人使用六十进制和基于指位的计数系统,并发展了一个复杂的数学体系。

然而,二进制在计算机科学中的发展可以追溯到20世纪早期。二进制的概念最早由德国数学家古斯塔夫·莱布尼茨在17世纪提出。他在著作中描述了一种使用二进制位表示数值的系统。尽管当时没有得到广泛接受或运用,但他的想法成为后来计算机科学的基础。

二进制的应用在计算机领域得到了推动和发展。20世纪40年代,计算机科学家们开始探索基于二进制的计算和数据存储。使用电子元件构建的计算机,首次实现了二进制位的存储和处理。

二进制在计算机领域中的成功应用,可以归因于 它的简洁性和可靠性。二进制只有两个状态(0和1),易于实现和控制,而且对于电子系统来说较为稳定和可靠。

随着计算机技术的发展,二进制成为了计算机科学的基础,不仅用于 表示和处理数字,还用于 存储和处理 各种类型的数据。它也是 计算机系统中各个层次和组成部分 之间的通用语言,使得不同的硬件和软件能够共同工作。

二进制的由来可以追溯到古代的数学系统,但在计算机科学中的发展和应用主要归功于20世纪的科学家和工程师。二进制的简洁性和可靠性使得它成为了计算机科学的核心概念和基础。

1.2.2 概述(简洁版~)

二进制,是计算技术中广泛采用的一种数制,由德国数理哲学大师莱布尼茨于1679年发明。

二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”。

二进制广泛应用于我们生活的方方面面。比如,广泛使用的摩尔斯电码(Morse Code),它由两种基本信号组成:短促的点信号“·”,读“”;保持一定时间的长信号“”,读“”。然后,组成了26个字母,从而拼写出相应的单词。

1.2.3 补充了解——莫尔斯电码

Morse Code(莫尔斯电码)是一种用于通过电报传输信息的编码系统。它由美国发明家塞缪尔·莫尔斯和阿尔弗雷德·维尔曼于1830年代共同开发。

莫尔斯电码使用不同长度的短暂信号(点)和延长信号(划)表示字母、数字、标点符号和其他特殊字符。点由短暂的按键声或光信号表示,划则是将信号延长一段时间。这种交替使用点和划的形式实现了不同字符的编码。

根据莫尔斯电码的编码规则,每个字母和数字都有一个唯一的组合序列。例如,字母"A"用".-“表示,字母"B"用”-…“表示,而数字"1"用”.----"表示。莫尔斯电码的编码和解码需要具备对应的知识和技巧。

莫尔斯电码在过去被广泛应用于电报通信领域。它具有传输效率高、抗干扰能力强的特点。虽然自电报通信逐渐被现代通信技术取代,但莫尔斯电码仍然被广泛用于无线电通信、紧急信号、导航通信以及一些爱好者的通信活动中。

莫尔斯电码是一种用点和划表示字符的编码系统,由塞缪尔·莫尔斯和阿尔弗雷德·维尔曼发明。它在电报通信中发挥了重要作用,并且在现代通信和爱好者领域仍被广泛使用。

【2023,学点儿新Java-38】常见进制间的转换(以二、八、十六、十进制为主)| 二进制的由来 | 正数&负数的原码、补码、反码 | 一个字节可以存储的整数范围是多少?| 莫尔斯电码 介绍_第1张图片

记忆技巧:

【2023,学点儿新Java-38】常见进制间的转换(以二、八、十六、十进制为主)| 二进制的由来 | 正数&负数的原码、补码、反码 | 一个字节可以存储的整数范围是多少?| 莫尔斯电码 介绍_第2张图片

我们偶尔会看到的:SOS,即为:

【2023,学点儿新Java-38】常见进制间的转换(以二、八、十六、十进制为主)| 二进制的由来 | 正数&负数的原码、补码、反码 | 一个字节可以存储的整数范围是多少?| 莫尔斯电码 介绍_第3张图片

 

二、进制间的转换规则

2.1 二进制 —>> 十进制

 
二进制如何表示整数?

  • 计算机数据的存储使用二进制补码形式存储,并且最高位是符号位

    • 正数:最高位是0
    • 负数:最高位是1
  • 规 定

    • 正数的补码与反码、原码一样,称为三码合一
    • 负数的补码与反码、原码不一样:
      • 负数的原码:把十进制转为二进制,然后最高位设置为1
      • 负数的反码:在原码的基础上,最高位不变,其余位取反(0变1,1变0)
      • 负数的补码:反码+1

二进制转十进制:权相加法

针对于byte数据 举例来说:

【2023,学点儿新Java-38】常见进制间的转换(以二、八、十六、十进制为主)| 二进制的由来 | 正数&负数的原码、补码、反码 | 一个字节可以存储的整数范围是多少?| 莫尔斯电码 介绍_第4张图片

例如:byte类型(1个字节,8位)

25 ==> 原码 0001 1001 ==> 反码 0001 1001 -->补码 0001 1001

-25 ==>原码 1001 1001 ==> 反码1110 0110 ==>补码 1110 0111

整数:
正数:25   00000000 00000000 000000000 00011001(原码)
正数:25   00000000 00000000 000000000 00011001(反码)
正数:25   00000000 00000000 000000000 00011001(补码)

负数:-25  10000000 00000000 000000000 00011001(原码)
负数:-25  11111111 11111111 111111111 11100110(反码)
负数:-25  11111111 11111111 111111111 11100111(补码)

一个字节可以存储的整数范围是多少?

//1个字节:8位

0000 0001  ~  0111 111 ==> 1~127

1000 0001 ~ 1111 1111 ==> -127 ~ -1

0000 0000 ==>0

1000 0000 ==> -128(特殊规定)=-127-1

简单来说:

一个字节(8位)可以存储的整数范围是从0到255(2^8-1)。

一个字节由8个二进制位组成,每个二进制位能表示两个状态,即0或1。因此,一个字节可以表示2^8=256个不同的状态。但由于从0开始计数(而不是1),所以最大表示范围是从0到255。

当一个字节用来表示无符号整数时,范围从0到255,可以表示256个不同的数字。

当一个字节用来表示有符号整数时,一位用于表示符号位(0为正数,1为负数)。因此,除去符号位,剩下的7位可以表示2^7=128个不同的状态。但由于负数的表示,范围被平均分配为-128到127,共计256个不同的数字。

因此,一个字节可以存储的整数范围是从0到255(无符号整数)或从-128到127(有符号整数)。

2.2 注:更多进制转换,将在后面继续介绍。

敬请期待~

2.3 原码、反码、补码 相关知识补充

原码反码补码是在计算机中表示有符号整数的三种常见的编码方式。

  1. 原码(Sign-Magnitude)
    原码是最直观的表示方法,其中最高位表示符号位0表示正数,1表示负数。其他位表示数值的绝对值,即数值的二进制表示。例如,+5的原码是:00000101,-5的原码是:10000101。

  2. 反码(Ones’ Complement):
    反码的表示方法 是将正数的原码保持不变,负数的原码按位取反。即,正数的反码与原码相同,而负数的反码是将原码中所有位进行取反例如,+5的反码仍然是:00000101,-5的反码是:11111010。

  3. 补码(Two’s Complement):
    补码是计算机中最常用的表示方式,也是最常见的整数表示方式。在补码的表示方法中,正数的补码与原码相同,而负数的补码是在其反码的基础上加1补码的好处是能够简化整数的加法和减法运算。例如,+5的补码仍然是:00000101,-5的补码是:11111011。

补码使用了位运算的技巧,使得加法和减法 可以在不引入额外的处理逻辑的情况下完成。此外,补码的范围是对称的即使用相同位数的补码,能够表示的负数范围比原码或反码更广

小结:

  • 原码是将数值的绝对值与符号位直接表示。
  • 反码是在原码基础上对负数的位取反。
  • 补码是在反码的基础上加1,用于简化计算机中的加法和减法运算。补码还具有对称的范围特性,能够准确地表示正数和负数。

 


 

热门专栏推荐

  • Python&AI专栏:【Python从入门到人工智能】
  • 前端专栏:【前端之梦~代码之美(H5+CSS3+JS.】
  • 文献精读&项目专栏:【小小的项目 (实战+案例)】
  • C语言/C++专栏:【C语言、C++ 百宝书】(实例+解析)
  • Java系列(Java基础/进阶/Spring系列/Java软件设计模式等)
  • 问题解决专栏:【工具、技巧、解决办法】
  • 加入Community 一起追光:追光者♂社区

 

持续创作优质好文ing…✍✍✍

 

记得一键三连哦!!!

 

求关注!求点赞!求个收藏啦!

在这里插入图片描述

你可能感兴趣的:(备战2023博客之⭐_Java,常见进制转换,二进制,八进制,十六进制,十进制,原码,反码,补码,位运算)