首页 > 其他分享 >详解二进制,八进制,十进制,十六进制的原理与转换

详解二进制,八进制,十进制,十六进制的原理与转换

时间:2023-08-19 21:44:21浏览次数:44  
标签:十六进制 数字 二进制 位置 系统 八进制 十进制

首先了解一下数字系统的由来

数字系统是人类为了表示数量和进行计数而创造的一种工具。数字系统的发展可以追溯到古代文明,不同的文化和社会在不同的时间和地点创造了各种数字系统。以下是数字系统的一些关键发展阶段:

 

早期计数: 最早的人类社会使用自然物体如石块、棍子、贝壳等来进行计数。这种计数方式叫做“自然计数法”,它只能用于较小的数量。

 

  1. 手指计数: 人类发现自己的手指十分方便,可以用来计数。因此,很多文化中的计数系统都以十为基础,采用十进制计数法。

  2. 古代文明的数字系统: 不同的古代文明开始发展自己的数字系统。比如,古埃及使用了一种基于十的系统,古罗马采用了一种罗马数字系统。

  3. 印度-阿拉伯数字系统: 印度-阿拉伯数字系统,也就是我们今天所使用的十进制数字系统,最早出现在古代印度,并通过阿拉伯传播到西方。这个数字系统使用0到9的十个数字,并使用位置表示不同的数量级。

  4. 地位记数法: 地位记数法是印度-阿拉伯数字系统的重要特征,它使得我们可以使用相同的数字来表示不同的数量级。例如,在数字123中,1代表百位,2代表十位,3代表个位。

  5. 二进制和其他进制: 除了十进制外,人们还发展了其他进制的数字系统,如二进制(基于2)、八进制(基于8)、十六进制(基于16)等。二进制在计算机领域中非常重要,因为计算机内部使用二进制来处理数据。

数字系统的发展是人类文明和科技进步的一部分,它们对数学、科学和技术的发展产生了重要影响。不同的数字系统在不同的文化和领域中具有重要意义。

非位置制数字系统(Non-Positional Numeral Systems)和位置制数字系统(Positional Numeral Systems)是数字表示法的两种不同类型。它们在表示数字时的方式和原则有所不同。

非位置制数字系统: 在非位置制数字系统中,每个数字符号代表一个固定的数量,不依赖于其位置。这意味着一个数字在哪个位置上出现并不会改变其意义。例如,罗马数字就是一种非位置制数字系统。在罗马数字中,每个符号(如I、V、X、L等)代表固定的值,而不管它出现在哪个位置。

位置制数字系统: 位置制数字系统是现代数学和计算中最常用的数字表示法。在这种系统中,数字的值是根据其在数字串中的位置来确定的。每个位置(例如个位、十位、百位等)都有不同的权重,因此相同的数字在不同位置上表示不同的数量。十进制(基于10)数字系统是一种常见的位置制数字系统,其中每个位置上的数字可以表示0到9之间的值,而位置的权重是10的幂次。

例如,在十进制系统中,数字 123 表示的是 1 * 100 + 2 * 10 + 3 * 1,而数字 321 表示的是 3 * 100 + 2 * 10 + 1 * 1,尽管数字相同,但位置不同,所以它们的值不同。

在计算和数字表示中,位置制数字系统更加灵活和方便,因为它允许表示更大范围的数值,并且可以进行数学运算。非位置制数字系统通常在特定的文化或历史上有其重要性,但在现代科学和计算中较少使用。

十进制(Decimal)是一种常见的位置制数字系统,也称为基数为10的数字系统。它在日常生活和计算中广泛使用,以表示各种数量。以下是关于十进制的详细解释

基本原理: 十进制使用十个数字符号来表示所有的数字,从0到9。每个数字的位置决定了它的权重,最右边的数字是个位,往左依次是十位、百位、千位,依此类推。每个位置上的数字乘以10的幂次,再相加就得到了整个数值。

举例说明: 例如,数字 3587 在十进制中表示如下:

3 * 1000 + 5 * 100 + 8 * 10 + 7 * 1 = 3000 + 500 + 80 + 7 = 3587

这个例子中,数字 3 在千位上,数字 5 在百位上,数字 8 在十位上,数字 7 在个位上。

权重和数位: 在十进制中,每个数字的权重是10的幂次。最右边的数字权重为10^0(1),下一个数字的权重是10^1(10),然后是10^2(100),以此类推。

数位分隔符: 为了提高可读性,长数字通常会使用逗号或空格等分隔符来分隔数位。例如,数字 1,234,567 表示 123 万 4567。

数学运算: 在十进制中进行数学运算非常直观,因为我们在日常生活中已经习惯了使用十进制。加法、减法、乘法和除法在十进制中与我们的日常经验相吻合。

小数: 十进制还可以用来表示小数,小数点将整数部分和小数部分分开。例如,数字 3.14 表示 3 加上 0.14。

十进制是我们最常见和熟悉的数字系统之一,它在金融、科学、工程、计算等领域都有广泛应用。由于人类习惯于使用十指计数,十进制在日常生活中得到了广泛的应用和认可。

二进制(Binary)是一种位置制数字系统,使用基数为2,只包含两个数字符号:0和1。二进制在计算机科学和电子领域中具有重要作用,因为计算机内部使用的是二进制表示法。以下是关于二进制的详细解释

基本原理: 二进制使用两个数字符号,0和1,来表示所有的数字。每个数字的位置决定了它的权重,最右边的数字是最低位,往左依次是次低位、更高位,依此类推。每个位置上的数字乘以2的幂次,再相加就得到了整个数值。

举例说明: 例如,二进制数字 1011 在十进制中表示如下:

1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 1 * 2^0 = 8 + 0 + 2 + 1 = 11

这个例子中,数字 1 在最高位上,数字 0 在次高位上,数字 1 在次低位上,数字 1 在最低位上。

权重和位数: 在二进制中,每个数字的权重是2的幂次。最右边的数字权重为2^0(1),下一个数字的权重是2^1(2),然后是2^2(4),以此类推。

位分隔符: 为了提高可读性,长二进制数字通常会使用空格或其他分隔符来分隔位数。例如,二进制数字 1101 0010 表示为 1101 0010。

小数: 二进制也可以用来表示小数,小数点将整数部分和小数部分分开。例如,二进制数字 1101.101 表示 13 加上 0.625。

计算机内部表示: 计算机内部的数据和指令都是以二进制形式表示的。二进制的简单性使得计算机内部电子元件易于表示和处理。

逻辑运算: 二进制在逻辑运算中非常有用,因为它与逻辑门和布尔代数的关系密切。逻辑门通过操作二进制位来实现逻辑功能。

二进制是计算机科学和电子工程中至关重要的概念,因为现代计算机系统都是以二进制形式处理和存储数据的。虽然在日常生活中我们更常用十进制,但理解二进制对于理解计算机的基本工作原理非常重要。

八进制(Octal)是一种位置制数字系统,使用基数为8,只包含八个数字符号:0、1、2、3、4、5、6、7。八进制在计算和编程中有一些应用,尤其是在早期的计算机系统中。以下是关于八进制的详细解释:

基本原理: 八进制使用八个数字符号来表示所有的数字,从0到7。每个数字的位置决定了它的权重,最右边的数字是最低位,往左依次是次低位、更高位,依此类推。每个位置上的数字乘以8的幂次,再相加就得到了整个数值。

举例说明: 例如,八进制数字 765 在十进制中表示如下:

7 * 8^2 + 6 * 8^1 + 5 * 8^0 = 448 + 48 + 5 = 501

这个例子中,数字 7 在最高位上,数字 6 在次高位上,数字 5 在最低位上。

权重和位数: 在八进制中,每个数字的权重是8的幂次。最右边的数字权重为8^0(1),下一个数字的权重是8^1(8),然后是8^2(64),以此类推。

位分隔符: 为了提高可读性,长八进制数字通常会使用空格或其他分隔符来分隔位数。例如,八进制数字 234 567 表示为 234 567。

与二进制和十六进制的关系: 八进制和二进制之间有一定的关系,因为8是2的3次方。每个八进制数字对应三个二进制位。八进制在早期的计算机系统中有一些应用,因为八进制更直接地映射到二进制。

计算机内部表示: 尽管在现代计算机系统中使用二进制表示数据更为普遍,但在某些情况下,八进制仍然用于表示特定的数据。

编程中的应用: 在某些编程环境中,八进制可以用来表示字符、权限标志、内存地址等。在一些编程语言中,前缀0表示数字是八进制的。例如,0o123 表示八进制数123。

尽管八进制在现代计算机领域中的应用相对有限,但了解它仍然有助于理解数字系统和不同进制之间的关系。

标签:十六进制,数字,二进制,位置,系统,八进制,十进制
From: https://www.cnblogs.com/hirokoyo/p/17643180.html

相关文章

  • iwebsec-sql注入 11 十六进制编码绕过
    01、题目分析这里对单引号双引号啥的进行了过滤,可以采用16进制编码进行绕过02、手工注入这个和上次的双重url编码有异曲同工之妙,不过这个编码就简单了,直接十六进制编码即可,这里采用的编码软件是CaptfEncoder-win-x64-3.1.2.exe,16进制编码主要是在引号方面--查询行数?id=1or......
  • 【蓝桥杯备赛系列 | 简单题】十六进制转八进制、十六进制转十进制、十进制转十六进制
    ......
  • Java入门学习——二进制、八进制、十六进制
    一、十进制转二进制的算法十进制数转二进制数:除二取余法。  二、十进制转十进制的算法三、二进制转十进制的算法    四、八进制、十六进制介绍为了便于观察和表示二进制,推出八进制和十六进制。每3位二进制作为一个单元,最小数是0(000),最大数是7(111),共8个数字,这就是......
  • 十六进制 ascii码 字符串
    十六进制ascii码字符串defis_hex(string):hex_chars=set('0123456789abcdefABCDEF')returnall(cinhex_charsforcinstring)defis_ascii(string):returnall(ord(c)<128forcinstring)importbinasciistr_bytes=b'3010864E725......
  • 在线代码工具:根据十六进制字符串解析对应的字段值
    说明hexString是字节序是小端的(读值得时候会转为大端来读取值)valueByteSizes是个根据要求顺序读取值得字节大小的数组。例如:newbyte[]{4,2,1},程序会顺序读取hexString字符串:第一个值取4个字节并读取其值,第2个值取2个字节,第3个值取1个字节,4.(如果存在)第4个值取1个字节。......
  • 新十六进制
    Smiling&Weeping----我知觉身后有人,在呼唤我,回头只有肆虐的风。题目链接:码题集OJ-VIP(matiji.net)思路:还是数位DP,不过是......
  • java 十六进制字符串转换为有符号整数
    StringhexString="FEF7";//十六进制字符串intintValue=Integer.parseInt(hexString,16);//将十六进制字符串转换为整数shortsignedValue=(short)intValue;//转换为短整型(16位有符号整数)intintValue=(bytes[1]&0xFF)<<8|(bytes[0]&0xFF);//合并......
  • python 将十进制小数转为n进制小数
    Python将十进制小数转为n进制小数在计算机科学中,数字经常以十进制(base-10)表示。这意味着数字由10个不同的数字(0-9)组成。然而,有时我们需要将数字转换为其他进制,例如二进制(base-2)或十六进制(base-16)。在本文中,我们将重点讨论如何将十进制小数转换为n进制小数,其中n是2到36之间的任意......
  • C语言中的二进制数、八进制数和十六进制数
    C语言是一门使用数字的编程语言,其中包括了8进制和16进制的数字表示方法。这两种表示方法都可以用于整数和字符类型。8进制表示法8进制数字以数字0(零)和前缀0开头表示。例如,八进制数012表示为十进制的10。以下是一些示例:intx=012;//八进制的12,等价于十进制的10inty=0......
  • 2-3 编写函数 htoi(s),把由十六进制数字组成的字符串(包含可选的前缀 0x 或 0X)转换为与
    ArchlinuxGCC13.1.1 202304292023-07-2219:48:23星期六 点击查看代码#include<stdio.h>#include<ctype.h>inthtoi(constchar*s);intmain(){chararr[4]="0x3A";intresult=htoi(arr);printf("%d\n",resu......