精华内容
下载资源
问答
  • 众所周知,计算机中使用的是进制运算规则,能够读懂二进制语言,但究竟什么是进制进制之间如何相互转化?今天我们就来详细了解下。

    众所周知,计算机中使用的是二进制运算规则,能够读懂二进制语言,但究竟什么是进制?进制之间是如何相互转化的?今天我们就来详细了解下。

    一、数制的由来

    1.1 数制的基本概念

    数制:也称为计数制,是一种计数的方法,是用一组固定的符号和统一的规则来表示数值的方法。在计数过程中采用进位的方法称为进位计数制(进制),包括数位基数位权三个要素。

    • 数位:指数字符号在一个数中所处的位置。
    • 基数:指在某种进位计数制中数位上所能使用的数字符号的个数。例如十进制的基数为10
    • 位权:数制中某一位上的1所表示数值的大小(所处位置的价值)。例如十进制的230,1的位权是100,2的位权是10,3的位权是1

    1.2 计算机语言中常用的进制及表示方法

    在计算机汇编语言中,常用的进制有二进制八进制十进制

    数制的表示有2种方法,一种表示方法是数字下标法,对于不同进制的数可以将它们加上括号再用数字下标表示进制:

    例如:(110010011111)2 代表二进制数 ; (6137)8 代表八进制数

    另一种是用后缀字母表示进制:

    二进制 B (binary)
    八进制 O (octal)
    十进制 D (decimal)
    十六进制 H (hexadecimal)

    例如:(3AB)H 代表十六进制数;(2654)O 代表八进制数

    注:当没有下标或后缀时默认为十进制数。

    1.3 常见进制的运算规则

    • 二进制:逢二进一

      基数为2,数值部分用两个不同的数字0、1来表示。

    • 十进制:逢十进一

      基数为10,数值部分用0、1、2、3、4、5、6、7、8、9来表示.

    • 十六进制:逢十六进一

      基数是16,有十六种数字符号,除了在十进制中的0至9外,还另外用6个英文字母A、B、C、D、E、F来表示十进制数的10至15。

    1.4 二进制的优缺点

    二进制最大的优点是运算规则简单,技术上很容易实现,且可靠性高不易出错,容易实现逻辑运算。

    二、数制的相互转换

    2.1 二进制、八进制、十六进制转十进制

    例1:将下列二进制数转换为十进制数

    t1tt7n.png

    例2:将下列八进制数转换为十进制数

    t1t36g.png

    例3;将下列十六进制数转换为十进制数

    t1tUkq.png

    2.2 、十进制转二进制、八进制、十六进制

    例1:将下列十进制数转换为二进制

    t1t8XQ.png

    例2:将下列十进制数转换为八进制

    t1tY0s.png

    例3:将下列十进制数转换为十六进制

    t1tat0.png

    2.3 二进制转八进制、十六进制;八进制转十六进制

    例1:将二进制数100010转换为八进制

    **方法:**将每3个二进制数分为一组(从左至右),不够时补0

    t1tdhV.png

    例2:将二进制数100111010转换为十六进制

    **方法:**将每4个二进制数分为一组(从左至右),不够时补0

    t1t0pT.png

    例3:将八进制数1325转换为十六进制

    八进制数不可以直接转换为十六进制,需要先将其转换为二进制或十进制再转为十六进制。方法同上,这里就不在赘述。答案:2D5

    2.4 特殊情况:小数点的处理

    如果遇到十进制数例如23.76,如何转换?

    t1tB1U.png

    三、进制转换快速查表

    下表清晰的反应了不同数制之间的对应及转换关系:

    t1tDcF.md.png

    展开全文
  • 进制及相关概念是什么

    千次阅读 2013-08-29 20:37:38
    二进制及相关概念是什么?   二进制,八进制,十进制,十六进制…… N进制,逢N进位;二进制,逢2进1。   二进制不便于人工阅读,人类最习惯理解十进制数,为了加快人类对二进制数阅读与理解,于是人类...

    二进制及相关概念是什么?

     

    二进制,八进制,十进制,十六进制……


    N进制,逢N进位;二进制,逢2进1。

     

    二进制不便于人工阅读,人类最习惯理解的是十进制数,为了加快人类对二进制数的阅读与理解,于是人类发明八进制和十六进制做跳板来快速阅读二进制数据。

    在十进制中,一个数字的最右一位,即最低位称为个位,个位的左边一位,即更高一位叫十位,然后从右至左依次是百位千位。但是在其他进制中,就不再好这样称呼各个位了,一般从最右一位至最左一位,也就是从低位到高位依次叫0位,1位,2位3位N位等等。

    三位二进制数能表示0~7共八个数,四位二进制数能表示0~15共十六个数,五位二进制数能表示0~31共三十二个数。

    综合考虑,十六进制不长不短,比八进制能表示更多位的二进制数,比三十二进制数更容易口算,十六进制与二进制或十进制转换既容易被人记住又容易被人理解,八进制慢慢用的少了,三十二进制则几乎没考虑过,太大的数运算不方便。人类大脑通过十六进制这个跳板,很容易对二进制数进行运算。

    二进制与十六进制转换口诀是8421,这种有规律的倍数递减的口诀很容易记,转换法则是个位数的加法,也很容易口算。

    4位二进制数对应的十进制数从高位到低位分别是8421,这4个数相加正好是15,十六进制数就在十进制数基础上添加了abcdef这6个数表示10~15的数。在换算时,一个4位二进制数按位逐位换算,当换算某位时(此时忽略其他位(或假设为0)),若该位为1,则换成对应的8或4或2或1,若该位为0则算为0,待4位二进制数逐位换完后,将每位换到的十进制数算总和即可轻松换成1位的十六进制数。仿照十进制里个十百千位的叫法,在二进制的4位数中,最低位叫1位数,再高一位可以叫2位数,再依次就叫4位数8位数。

    此外,二进制中的位不同于十进制的位,二进制中的“位”字在英文中是bit,而十进制的个位英文为unit,百位英文为hundreds。

    记住8421口诀,任意一串二进制数都容易口算成一串十六进制数,只要将一串二进制数从低到高每4位隔开,顺序对应的每4位二进制数换算成对应的1位十六进制数即可。

    为便于区分不同进制数,在数据后跟英文单词首字母表示,后缀B(binary)表示二进制,D(decimalism)表示十进制,H(hexadecimal)表示十六进制。

    1000B = 8D

    0100B = 4D

    0010B = 2D

    0001B = 1D

    任何进制数换算成十进制数都比较方便,m进制数的第n位数k的十进制数就是该数乘以该进制数的该位次方,即k * mn,有这个公式,一个m进制数Y的十进制数就是各个位的十进制数相加,假设Y有z个位,Y的第n位数表示为Yn,则Y0 * m0+ Y1* m1+ …… + Yz * mz。其他进制之间的转换公式不在此列出,其他讲计算机基础的书都广泛介绍,网上搜索也可以找到详细内容。

    二进制及其运算是计算机科学入门的数学基础,布尔逻辑运算就是二进制数的快速运算法则。因此,能对数字的进制转换及布尔逻辑做快速心算是从数学基础上掌握计算机科学的入门基本功。

    在计算机的存储器和寄存器中,存放的都是二进制数,而人们发明的各种调试器及人机交互界面都至少会提供十六进制数据以供阅读。形象一点的说,十六进制数就是计算机科学领域的官方语言。

    有了数据,就可以用不同的数据表示不同的意义,比如指令就是一种意义。只要严格定义数据与指令的一一对应关系,就可以用某个特定数表示某个特定的指令,同理,某特定数也可以表示某个特定字符,这样人类的语言就可以替换为数据存储在计算机里。

    根据数学理论,可以用有限固定位的数据来代表有限的意义。在计算机发展过程中,人们曾经也设计过比如7位(bit)或23位这样的计算机,但人们逐步体会到8位,16位,32位这样的二进制数在表达意义上的优缺点。8位二进制数正好是2位十六进制数,数据转换排列整齐有优美感,而其他有限位的二进制数不能整齐的转换为十六进制数,自然就被摈弃了。人们又给8位的二进制数据另起了个名字,叫Byte(中文译作字节)。

    有限位的数据表示有限的意义,在有限的意义满足使用者的需求时,就是简单干净的美;但在有限的意义不能满足使用者的需求时,就需要更大的有限位来表示更多的有限意义。因此,在计算机与人类需求的相互满足与不满足的发展中,计算机从最早的8位就发展到了如今的64位。

     

    二进制如何运算?二进制数之间怎么做加减乘除呢?

     

    英国人布尔发表论文完整的阐述了一套用于二进制数运算的法则,这套法则就取名叫布尔逻辑运算。基本运算法则不再是十进制中的加减乘除,而是与,或,非。从“与或非”再衍生出“与非,或非,异或,同或”等法则。布尔逻辑运算的具体细节可以归纳成一个简短的真值表,很简单,在此简单基础上做重复累计就可以做非常复杂的运算。

    需要重点想清楚的是:二进制数之间怎么做加减乘除呢?

    或者说二进制数“与或非”法则如何转换成加减乘除法则?

    首先加法在数学上严格意义其实是分成两步走:两个1位数相加和满阶进位。

    因此,完整意义上的加法在二进制数之间是先位对齐做异或,然后再满2进位。

    异或,或说是两个1位二进制数的异或运算法则就是相同为0,不同为1。

    所以,1+1=? 如果是十进制,1+1=2,可如果是二进制呢?应该是1+1=10,初学者看这里就要看晕了,1+1=10 ??这里的10实际是二进制的10,准确应该写成10B,要读作壹零,不能读成十。按8421口诀,二进制的壹零换算成十进制数就是2。

    如果两个二进制数只做异或,不进位,就叫半加。在二进制运算法则中,两个二进制数相加的符号是⊕,所以在二进制半加法则下,1+1=0要写做1⊕1=0,只有在二进制进位加法则下才有1⊕1=10。

     

    二进制数能做加法了,那减法乘法除法呢?

     

    其实减法也可以将减数看成负数,1-1可以看成1+(-1)。二进制数从正数算相应的负数实际是基于有限位的二进制数先取反再加1,这也叫补码法则。只有有限位的二进制数才能做取反,只有有限位高位的二进制数取反才能知道最多取反多少位数,比如8位二进制数下对1取反的值为11111110B,4位二进制数下对1取反的值为1110B。

    这里还涉及到二进制数在计算机中的表达法则,即补码法则,只有按该法则,一个二进制数才能区分是正数还是负数。在此基础上才能做二进制的减法运算。对于运算器来说,只有以补码形式存储的二进制数,无符号数与有符号数只是同样的一个补码的不同表达形式而已。

    乘法是加法的累加效果,因此有了加法,就能做乘法。按照这种逻辑,除法也就能用减法做了。相对于加减乘法,二进制数的除法是最复杂的运算。

     

    二进制数如何表达负数小数?

     

    简而言之,二进制的正负数用最左一位,即最高位表示,最高位为0表示该数是正数,最高位为1表示该数是负数。一个负的二进制数用补码表示,换句话说二进制的负数是用正数的补码来计算,也就是将一个正的二进制数除了符号位之外其他位都取反再加1,然后符号位填1。

    在有符号数(即区分正负数)的有限位中,最高一位是符号位,不能看成数,不能当作数来做换算或是计算。如果在无符号数中,则最高位不表示符号位。

    十进制数的小数部分和整数部分不能用同样公式进行换算,十进制数的小数部分必须单独用乘2公式去换算成二进制数。十进制数的小数反复做乘二计算,结果的小数做下一次乘二计算,最终将小数乘尽为整数为止,每次所得整数部分的1位数依次是二进制数小数的高位到低位。

    如果有读者想更系统更专业更系统的了解这个问题,推荐阅读《Computer Systems Aprogrammer’s Perspective》(中文译作《深入理解计算机系统》)的第二章。
    展开全文
  • 数制的概念与常用的数制之间如何实现转化呢一、首先我们来看一下,数制和与它相关的基数、位权是什么?1. 数制就是表示数值大小的各种计数体制,简单来说就像是1,2,3···之类的用来计数的,只不过有很多类。例如:...

    8c685ce4442c2ffecbe5b9ea80da75e2.png

    数制的概念与常用的数制之间如何实现转化呢

    一、首先我们来看一下,数制和与它相关的基数、位权是什么?

    1. 数制就是表示数值大小的各种计数体制,简单来说就像是1,2,3···之类的用来计数的,只不过有很多类。

    例如:常用的十进制、二进制、八进制、十六进制等。

    基数:在该进位制中可能用到的数码个数。(如果这里看不懂,往后看就明白了)

    例如:十进制的基数是10;八进制的基数是8。

    位权(位的权数):

    进位计数制中,某个数位(数的位置)上的值是由该位上的数码乘上属于这一位上的权数。

    例如:十进制的个位、十位、百位上的权数分别为10的0次方、10的1次方、10的2次方。

    二、简单地介绍一下这几个常用的数制

    二进制

    数码:0,1。只有这两个数。

    基数:2,用字母B表示。

    运算规律:逢二进一,如;1+1=10。

    二进制数的权展开式:各个数位上的数码*各个数位上的权数,再将其求和。

    0dd7804ae1eac4fdf5d821b73d887487.png

    八进制

    数码:0,1,2,3,4,5,6,7,

    基数:8,用字母O表示。

    运算规律:逢八进一,如:7+1=10。

    f47e2f816e9ce5311a721d73e34dc138.png

    十六进制

    数码:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F.

    基数:16,用字母H表示。

    运算规律:逢十六进一,如:F+1=10.

    195906241da02b9860ec15939be0f77b.png

    三、我们来学习一下常用数制之间的转化吧!

    十进制转化为二进制

    第一步 将十进制数值从小数点的位置分为两部分。整数部分除2取余数,倒序取。

    第二步 将十进制数的小数部分乘2取整数,正序取。

    第三步 将整数部分与小数部分合起来就行了。

    c0ab2b9ac7241e3b2688334b9e61a96e.png

    十进制转化为八进制

    第一步 将十进制数值从小数点的位置分为两部分。整数部分除8取余数,倒序取。

    第二步 将十进制数的小数部分乘8取整数,正序取。

    第三步 将整数部分与小数部分合起来就行了。

    bc87a427f4a4e49d7e52f3902fbc1616.png

    十进制转化为十六进制

    第一步 将十进制数值从小数点的位置分为两部分。整数部分除16取余数,倒序取。

    第二步 将十进制数的小数部分乘16取整数,正序取。

    第三步 将整数部分与小数部分合起来就行了。

    ae4fc01a627856fde74c20774be2e109.png

    二进制与八进制之间的转换

    二进制转化为八进制

    第一步 把二进制从小数点开始,向左(对整数)、向右(对小数)将每三位(因为8等于2的3次方,所以是三位)二进制数做一组,数到首尾不足三位的补0(缺几位补几个0)。

    第二步 将每三位二进制数用一位对应的八进制数进行替换即可。

    八进制转化为二进制

    直接将每一个八进制的数值转化为对应的二进制数就行了,每个八进制数对应三个二进制数。

    db1e79e4ca6363acd67c166b648703ef.png

    二进制与十六进制之间的转换

    第一步 把二进制从小数点开始,向左(对整数)、向右(对小数)将每四位(因为16等于2的4次方,所以是四位)二进制数做一组,数到首尾不足四位的补0(缺几位补几个0)。

    第二步 将每四位二进制数用一位对应的十六进制数进行替换即可。

    55c882b973e530742404c12d3d6a715f.png

    八进制与十六进制之间的转换

    通过二进制作为中介

    八进制 ~ 二进制 ~ 十六进制

    十六进制 ~ 二进制 ~ 八进制

    39bcaac92903bd442ba71bddf80624e8.png

    最后有两张图,内容需要背一下,才能灵活运用。

    507e9b5a46909dd50ed7986702e638da.png

    fabba7dd510b7aaf910a860b3657b827.png

    好了,以上就是全部内容了,希望能帮到你,看在我这么辛苦的份上给我点个赞呗!

    声明:图片来源于网络,侵权联系删除。

    展开全文
  • 数字的概念首先思考一下数字是什么?为什么要有数字。我有一个苹果,你脑海中会出现一个苹果。我有五个苹果,你脑海中会出现五个苹果。我有三个苹果,你脑海中会出现三个苹果。我有一千个苹果,你可能想象不出来...

    42afebcfd0638b0595d3a1cc77c558e6.png

    准备写一篇关于浮点数存储的,然后先写了进制转换,越写越多,就单独作为一篇文章吧。

    2019.723,这个数的二进制形式是什么样呢?让我们慢慢考虑。

    数字的概念

    首先思考一下数字是什么?为什么要有数字。

    我有个苹果,你脑海中会出现个苹果。

    我有个苹果,你脑海中会出现个苹果。

    我有三十个苹果,你脑海中会出现三十个苹果。

    我有一千个苹果,你可能想象不出来了。

    数字的作用,就是让我们对一个东西的数量有一个更精确的认识。如果没有数字,我可能只能说我有一桌子苹果,我有一堆苹果,我有一大堆苹果,我有一大大堆苹果,这些都是感性的认知,每个人的认知可能是不一样的,而数字统一了我们对「量」的概念。

    此外,另一个神奇的地方在于数字仅仅是「量」的概念,他没有限制去描述什么。

    比如说五个苹果,五只小狗,五头牛,五粒大米,数量都是五,但他们的体积、质量、形状都和他们本身有关了。

    数字的记录

    后来人类发明了纸笔,如果把这个「量」的概念写下来该怎么办呢?

    最简单的想法就是画竖线,每增加一个,就加一条竖线。

    1 -> I

    2 -> II

    3 -> III

    4 -> IIII

    5 -> IIIII

    20 -> ???

    如果数字大了,一直画竖线显然是不现实的,在出土的甲骨文中发现了当时人们对数字的认识。

    72ea546998358d255e55dc676effdfad.png

    一些大的数字用一些特定的符号来表示,这样如果表示 108 的话,我们只需要画出这两个图形就可以了。

    26107eaec2a7b52b47546a4681001afd.png

    顺序无所谓,另一个人可能画出的是下边的

    2d1dd1c76817ad202932305697a2cdbf.png

    即使顺序不一样,但他们表示的数字都是 108

    进制的概念

    上边的依旧不是很方便,比如我要是想表示 1000,如果我们只有 100 对应的符号,我还是需要画 10 个才行。接下来,人们用了一个更伟大的发明,进位制,也许因为人有 10 根手指,所以采用了 10 进制,其实就是我们现在的计数法。用0 - 9 十个符号就可以表示任意数字了。

    这里边最伟大的发明就是0的概念了,它除了表示数量上的 0,也可以用来占位。从而数字在不同的位置有了不同的含义。拿十进制来举例,就是逢十进一。

    得到个苹果,写个 1,得到个苹果,写个6,得到个苹果了,怎么表达这个数量呢,低位用0占位,高位写1就可以了。也就是10。此时的1不再是一,而是一个十。同理100,就表明有十个十的数量。此外再发明一个小数点,0.1,小数点右边的一表明是十分之一。

    每个位置就有了不同的含义,可以看作下边的公式。e 是小数点后开始的数位。

    ec7e20664a6fa4dd7f2971b8ec45177f.png

    a,b,c … 代表0 - 9中的任意一个符号,现在的数量是a1000,b 个 100,c 个 10……

    比如2019.723就可以看成下边的样子

    4dd1aca2a397d7f5cf278bcea0c503ea.png

    上边是十进制,让我们想一下 2 进制。

    2 进制只有两个符号可以用,那就是01,规则是满2 就要进 1

    如果有一个苹果那么就记做1,如果有两个苹果要利用0来占位,高位写1,也就是10,如果有四个苹果,那就用100来表示。

    因为我们对十进制太熟悉了,如果我说「我考了100分」。大家第一反应就是我考的不错,但如果是在二进制的世界,100其实是一个蛮小的数字。

    如果把二进制换两个符号,比如>来表示个苹果,<来表示零的概念,用来占位。我如果说我考了><<分,这样大家就没有条件反射觉得我考的很高了。

    所以我们要明确一个概念,不同进制下,可能用了同一个符号,但对于同一个数量,那么表示法是不一样的。

    47a2f3724f3b0f3d60189e82d7e45066.png

    看到这么多苹果,

    商朝人可能会写下,我有| 二个苹果。

    十进制的人们会写下,我有 12 个苹果。

    二进制的人们会写下,我有 1100 个苹果。

    可以看到对于同一个数量,大家的表示是不一样的,即使十进制和二进制的人们用了相同的符号01,但由于进制不同,他们写出来是不一样的。

    有一天二进制的人和十进制的人相遇了,二进制的人说,我买了1100个苹果,然后对于十进制的人第一反应,哇,一千多个苹果,也太多了吧。

    二进制的人们,看到1100立马脑海中联想到了上图的数量,但是对于十进制人们必须把这个数量转换成自己熟悉的十进制表示,才可以在脑海里想象1100个苹果的数量是多少。那么怎么转换呢?

    二进制转十进制

    让我们从十进制的角度去看一下二进制,二进制是满二进一,所以他的每一位的权重其实是以 2 为权重的,就是下边的样子。

    0b53de111acc83b55cc09ce9ae53f785.png

    a,b,c … 代表01中的一个,现在的数量是 a 个 8,b 个 4,c 个 2 ……

    所以1100如果用十进制表示,就是 1 个 8 加上 1 个 4,也就是12了。这样的话,我们就可以理解他买了多少苹果了。

    十进制转二进制

    那么十进制怎么转换成二进制呢?最开始的问题,怎么用二进制去表示 2019.723

    整数的转换

    其实这就是数学上的问题了,首先我们考虑整数部分2019。根据前边二进制转十进制的公式,我们知道可以有下边的等式。

    8284303c1d47401ae9fbe97dd2c690a2.png

    两边如果同时除以 2 会发生什么呢,

    ee09dfcfbb1d8f65ece8e8cf2d40d4a2.png

    可以看到系数是 a,b,c,d的部分都整除了,只剩下 e/2

    右边的话,把2019分成两部分20181。然后就是e943316f46930fc468ca531a5f7c14b7.png8d9844c849bdbe76a34e36e9d251ba70.png两部分。

    左边也看做2bd7d3256760d2dc9bd4b13a71615a44.png4a89ca3fa35a51059f962084dce7df7e.png两部分。

    左右两部分对应相等。

    右边的部分。

    10a65647858fc5fc843d241f190b9215.png

    所以算出了 c759fd5b6ce3cc511edf287f68fecd9e.png

    再看左边的部分。

    cf6ee88f6d5712f267b18100e0442c67.png

    我们可以两边继续同时除以2,就可以求出d。同理就可以求出a,b,c以及更多的系数。

    再来回想一下我们的方法,两边同时除以2,然后被分成e943316f46930fc468ca531a5f7c14b7.png8d9844c849bdbe76a34e36e9d251ba70.png两部分,其实左边就是商,右边是余数。2018/2=1009······1,对应等式左边的部分,e 其实就等于余数。

    所以转换的方法就是用2019除以2,余数作为二进制的低位。商作为新的除数,继续除以2,余数作为二进制的低位…直到商为 0。

    5aae9806abf5b664c42f6131719c7e00.png

    因为我们每次求出的都是二进制对应的低位,书写的话习惯于先写高位,所以倒着写过来 11111100011就是2019的二进制形式了。

    写成代码的形式。

    public static List integerTrans(int n) {
        ArrayList list = new ArrayList<>();while (n != 0) {
            list.add(n % 2);
            n /= 2;
        }for (int i = list.size() - 1; i >= 0; i--) {
            System.out.print(list.get(i));
        }return list;
    }

    小数的转换

    考虑完整数,再来想一下小数0.723怎么处理。同样的,利用二进制转十进制的公式,写出下边的等式。

    2caf48f84ff5da524bf5f0da10896513.png

    之前同时是利用两边同时除以2,对于上边的等式肯定不行了。换一下,两边同时乘以2呢?看看会发生什么。

    dd06aee5245acad11fecae02c5ab81b0.png

    和之前一样,把两边分别分成两部分。

    4b3cd40cc08278fe9499153887c55c7d.png

    两部分分别对应相等,可以知道

    d39b90ac61950b5a28a42e46abfa762c.png

    另外一部分的话

    e63fb2aeb96dcdad41199bf8f313f60a.png

    我们继续同时乘以2,变成下边的样子。

    45a425a20e0c74fc2e32c5c4bb945d19.png

    这样又可以求出f3e3460c869135214af80db764f90107.png,同样的一直不停的继续下去,直到得到的新的小数部分是0

    所以我们的算法就是不停的乘2取整数部分,有可能得到的新的数永远不等于 0,这就取决于我们需要的精度了,可以随时停止。

    61de1c7dd475dc0bd31dc92be81dd2f5.png

    小数的话正着写出来就可以了,0.1011就是十进制0.723的近似值了。

    所以十进制小数转成二进制并不会像十进制整数那么顺利。原因的话,因为二进制小数它的权重依次是0.5,0.25,0.125…,所以只有这些数的任意相加才能被精确表示。大部分的十进制小数都不能精确的用二进制表示。

    甚至看起来最简单的0.1如果转成二进制,会是什么样呢?

    56277aec1b51a2df1b7dd2103e511274.png

    可以看到计算过程中,出现了循环,0.4,0.8,0.6,0.2会循环出现,所以0.1的二进制表示就是0.0 0011 0011 0011...是一个无限循环小数了。它就相当于我们十进制中的1/3,写成小数形式是0.3333333...

    用代码表示一下,我们只保留 10 位小数。

    public static List decimalTrans(double n) {
        ArrayList list = new ArrayList<>();int count = 10;while (count > 0) {
            n = n * 2;
            list.add((int) (n));
            n = n - (int) (n);
            count--;
        }for (int i = 0; i         System.out.print(list.get(i));
        }return list;
    }

    历史的发展

    可以看一下现实生活中数字的发展,引自维基百科。

    无位值十进制

    • 古埃及十进制:以一个竖道代表1,二并排竖道代表2,三竖道代表3,一横道代表4,左二撇右竖道代表5,上三撇下三撇代表6,上下两道代表8,四个(并排代表9,一个“人”字形代表10,“人”上加一横代表20,20左加一点代表30,横道上加一点代表40,横道上加三竖道(如中国筹算的8)代表60,横道上加四竖道代表80(形同中国筹算中的9)代表80,两横道上加三竖代表90……。

    • 古希腊十进制,1至9,10至90,100至900各有不同的单字母代表。

    • 古印度Kharosshi十进制,以一个竖道代表1,二并排竖道代表2,三竖道代表3,一个X代表4,IX代表5,||X代表6,XX代表8,10,20个有单字符代表。

    • 古印度和Brahmi十进制,和希腊十进制相似,1至9,10至90,100至900各有不同的单字母代表。符号很多。

    非十进的进位制

    • 巴比伦60进位制:以一个上大下小的楔形代表1,两个并列楔形代表2,三个并列楔形代表3,上二个楔形下二个楔形代表4,上三楔下二楔代表5,上三楔下三楔代表6,上四楔下三楔代表7,上四楔下四楔代表8,上五楔下四楔代表9;一个左小右大横楔代10,两个横楔并排代表20,三个横楔并排代表30,四个横楔并排代表40。

    • 玛雅20进位制:以一个点代表1,两个点并列代表2,三点并列代表3,四点并列代表4,短横线代表5,横线上加一点代表6,横线上加二点代表7,横线上加三点代表8,横线上加四点代表9;上下两横线代表10,上下两横线之上加一点代表11,三重叠横线代表15,三横线上加一,二,三点代表16,17,18;小椭圆圈上加一点代表20。

    十进位制

    • 中国古代的十进制有书写式和算筹两种型式。

    • 印度-阿拉伯十进位制。

    结束

    不得不感慨下人类的聪明,将量的概念抽象出来,不同地区的独立发展,最后又是那么的相像。所以数字,其实就是符号对数量的映射,并且人们达成了共识。

    赶快来分享关注吖越努力,越幸运

    a83ebe50a1daf6660970c3a14bff96a5.png

    展开全文
  • 这个栏目写着玩,一开始准备写数学分析。但是后来学业繁忙,于是改成小学生数学看图识数了。因为大部分人都对数有了很...这个看起来很容易理解,但是如何准确定义什么是一在我看起来一件很困难事情。...
  • 什么是进制

    2019-11-23 16:34:24
    由于人类解剖学特点,双手共有十根手指,故在人类自发采用进位制中,十进制是使用最为普遍一种。成语“屈指可数”某种意义上来说描述了一个简单计数场景,而原始人类在需要计数时候,首先想到就是利用...
  • 定义下面几个变量,假设前提是int占2个字节,long占4个字节,char占1个...首先,int型转化为二进制型,是什么概念?1个int字节转化为8个二进制位,比如int a=100;则a进制形式就是 25+24+22;也就是 0011 0100;看到没,int型
  • 2.进制一览2.1、二进制2.2、十进制2.3、八进制2.4、十六进制3.进制之间转换方法4.进制之间对应数值图1.表格图2.常见八位二进制数三、IP地址组成四、IP地址分类及范围和掩码五、私有网络地址六、子网划分1....
  • 一、递归算法常识: 递归需要满足两个基本条件: ①函数调用自身 ②函数设置了正确返回值 ... 用递归去计算阶乘问题或斐波那契数列很糟糕算法,为什么? ①递归实现函数...
  • 这一篇文章要探讨的是“如何用算法实现十进制转十六进制”并不涉及什么特别知识点。属于C语言基础篇。 在翻找素材时候,发现一篇以前写挺有意思代码,这篇代码里面涉及知识点没有什么好讲,也没有什么...
  •  比如1,一定要转为00000001(原码),高位0(补码等于原码),直接计算得十进制1,  负数:  比如11111111(原码),最高位1,表示负数;符号位不变其他位取反再加一,取反为10000000(反码),然后加一为...
  • 进制

    2017-03-16 15:22:00
    1)理解个X进制的概念 : 每一位 只允许出现 0~X-1 这几个数字,逢X进一,基X, 每一位有一个权值大小X的幂次。 其表示的数值可以写成按位权展开的多项式之和。 十进制: 每一位只允许出现0~9这十个数字,逢十进1,基...
  • 今天看了《逻辑设计基础》才明白了...如何求解一个补码,就要先涉及到模的概念,那么什么是模呢? “模”指一个计量系统的计数范围。比如说:对于 1 位十进制数字,它的范围:0-9,那么它的模就是 10 模可以理...
  • 关于进制我想说的话前言进制的概念进制的表示方式 前言 看到这么一句话: 世界上有10种人,认识和不认识二进制的。 乍那么一看,还以为哪来的种人,转脑子一想,拍了自己脑门一下,10 就是 1 0,就是二进制的2,...
  • 计算机中的进制

    2021-01-30 20:22:33
    今天我们来复习一下进制之间转换,首先我们先来了解一下什么是进制?进制也就是人们规定一种进位方法,比如二进制就是逢二进一,也就是说0,1之后就该进位,然后就是10,11,再次进位100,以此类推;十进制...
  • 基:二进制的基为二,八进制的基为八,十进制的基为十,十六进制的基为十六,以此类推。位权:以小数点开始,依次向左右两边编号,向左为0,1,2,…,向右为-1,-2,-3,…。以二进制为例,从小数点开始,向左位权依次...
  • 进制和之间转化

    2018-08-03 22:53:00
    1)理解个X进制的概念 : 每一位 只允许出现 0~X-1 这几个数字,逢X进一,基X, 每一位有一个权值大小X的幂次。 其表示的数值可以写成按位权展开的多项式之和。 十进制: 每一位只允许出现0~9这十个数字,逢十进1,基...
  • 进制转换

    2018-11-16 17:25:37
    https://www.cnblogs.com/fuhaots2009/p/3476502.html 【转】这篇文章关于二进制和十进制的关系介绍的很好。 二进制 二进制数字的一种表示形式,即“逢2进1”。从0开始,假设一个四位系统,0001表示的就是1,...
  • 第一节 进制的基本概念 位进制人们为了计数和运算方便而约定的计数系统,我们的计算机中一般采用的就是二进制。那什么是二进制呢?十进制指10个数字,0-9,...用十进制的数举例来说8=1000;3=0011;2=0010;9=100
  • Java语言基础(不同进制数据的表现形式)(掌握)2.2_Java语言基础(任意进制到十进制的转换图解)(了解)2.3_Java语言基础(十进制到任意进制的转换图解)(了解)2.4_Java语言基础(快速的进制转换法)(了解)3_Java语言基础...
  • 计算机进制转换

    千次阅读 2019-01-28 22:20:17
    我们说的n进制其实就是指逢n进一,人类最习惯使用十进制。为了实际需要,我们又建立了八进制和十六进制、二进制 生活中用到进制的例子: 一周七天:七进制 一年十二个月:十二进制 一小时六十分钟:六十进制...
  • 数位转换的意思数字的位存储之间的转换,我们平时的生活中或者电脑世界里,经常会用到数字和进制的概念。特别曾经我学的一门课程叫汇编语言,有一节专门进制之间的转换,比如二进制、八进制、十进制、十六...
  • 二进制是所有电子产品都在使用,而且除了二进制相信大家还听到过八进制、十进制、十六进制之类,而他们都是由二进制演算而来。那么什么是二进制呢?它基本概念是:二进制就是逢二进一,因为使用二进制只有0,...
  • C语言 进制转换

    2016-01-12 19:32:42
    1.什么是进制? 一种计数方式,数值表示形式 2.常见进制 十进制、二进制、八进制、十六进制 3.进制数字进位方法 十进制 0、1、2、3、4、5、6、7、8、9 逢十进一 二进制 0、1 逢二进一 书写形式:需要以0b或者0B...
  • 一、 进制的概念 什么是进制? 几进制就是逢几进一,例如我们平时用的数字就是十进制数,它就是逢十进一。 在计算机中,最常用的就是二进制、八进制和十六进制。 名称 英文 简写 十进制 Decimal D 二...
  • 什么叫做栈栈一种特殊序列,栈内元素只能通过序列一端访问,这一端称为栈顶。栈被称为一种LIFO(last-in-first-out,后入先出)数据结构。由于栈具有后入先出特点,所以任何不在栈顶元素都无法访问。...
  • 10-C语言进制和位运算

    2018-08-30 16:53:00
    什么是进制? 进制一种计数方式,数值表示形式 常见进制 十进制、二进制、八进制、十六进制 进制书写格式和规律 十进制 0、1、2、3、4、5、6、7、8、9 逢十进一 二进制 0、1 逢二进一 书写形式:...
  • 进制与位运算

    2018-06-02 16:42:07
    1)理解个X进制的概念 : 每一位 只允许出现 0~X-1 这几个数字,逢X进一,基X, 每一位有一个权值大小X的幂次。 其表示的数值可以写成按位权展开的多项式之和。 十进制: 每一位只允许出现0~9这十个数字,逢十进1,...
  • 上两篇文章我们初步接触了ABI-应用程序二进制接口的概念,点击链接查看上一篇文章:【软件开发底层知识修炼】二二 ABI-应用程序二进制接口 二。了解了为什么会有ABI的存在。本篇文章继续学习ABI 的内容。学习在ABI...
  • 进制那些事儿

    2020-02-14 22:14:18
    虽然无聊但还是要讲那些概念。。。 进制:即进位计数制,人为定义带进位计数方法 依旧啰嗦我…… --------- 二进制就表示每一位置上数都逢2进一位 ...--------- 十进制就表示每一位置上...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 223
精华内容 89
关键字:

十进制的概念是什么