精华内容
下载资源
问答
  • 十六进制优势所在:1 与二进制转换方便,记住:8、4、2、1. "8421"2 数字长度比二进制短,与10进制相当。实际上在计算机内部使用的数字只有2进制的,也就是说只有0和1两个数字而已。 而16进制是计算机使用人员为了更好...

     

     

    十六进制优势所在:

    1 与二进制转换方便,记住:8、4、2、1.    "8421"
    2 数字长度比二进制短,与10进制相当。

    实际上在计算机内部使用的数字只有2进制的,也就是说只有0和1两个数字而已。

    而16进制是计算机使用人员为了更好的表达计算机中存储的数字而使用的,可以想象一下,如果使用人员也使用2进制来表示计算机中存储的数字,那么仅仅表示一个简单的数字就是长长的一串0、1代码,不仅不容易书写和纪录,而且还很容易出错;为了避免以上情况,使用人员才引入了16进制,使用它可以大大缩短数位长度,还容易与2进制进行转化。

    可见,16进制并不是计算机中使用的进制,而是人们为了便于书写和记录计算机中的二进制数而创造的.

    我们必须直接记住它每一位的权值,并且是从高位往低位记,:8、4、2、1.

    二进制数要转换为十六进制,就是以4位一段,分别转换为十六进制。

    如(上行为二制数,下面为对应的十六进制):

    1111 1101 , 1010 0101 , 1001 1011

    F D , A 5 , 9 B

    反过来,当我们看到 FD时,如何迅速将它转换为二进制数呢?

    先转换F:

    看到F,我们需知道它是15(可能你还不熟悉A~F这五个数),然后15如何用8421凑呢?应该是8 + 4 + 2 + 1,所以四位全为1 :1111。

    接着转换 D:

    看到D,知道它是13,13如何用8421凑呢?应该是:8 + 2 + 1,即:1011。

    所以,FD转换为二进制数,为: 1111 1011

    由于十六进制转换成二进制相当直接,所以,我们需要将一个十进制数转换成2进制数时,也可以先转换成16进制,然后再转换成2进制。

    从各位起四位一对应,
    0000-0
    0001-1
    0010-2
    0011-3
    0100-4
    0101-5
    0110-6
    0111-7
    1000-8
    1001-9
    1010-A
    1011-B
    1100-C
    1101-D
    1110-E
    1111-F
    如11101001-E9

    十六进制转十进制(小数,负数)

    十进制数转十六进制
    612.23
    整数部分除16取整
    612 / 16   = 38 ----- 4
    38 / 16    = 2   ----- 6
    2 / 16     = 0   ----- 2
    余数从下往上写     ----- 264
    小数部分乘16取整
    0.23 * 16 = 3.68 --- 3
    0.68 * 16 = 10.88 -- a
    0.88 * 16 = 14.08 -- e
    ...
    整数从上往下写     ----- .3ae
    612.23(10) = 264.3ae(16)
    展开全文
  • 概念 二进制数轴 通过观察和思考获得了优势 不能够超过255 P22 4.5-十六进制 十进制 二进制 hex十六进制 P23-4.6-十进制转换成十六进制 P24-4.7-十进制快速转换成十六进制 93-》80+13 80-》5* 16 13-》D 5D 不...

    P20-4.3十进制表示

    推理出一种新的计算机方式 观察和思考
    1表示有,0表示无

    P21 4.4-十进制快速转换成二进制

    一个数字除以2只可能产生0或者1的余数
    位的概念 二进制数轴
    通过观察和思考获得了优势
    不能够超过255

    P22 4.5-十六进制

    十进制
    二进制
    hex十六进制

    P23-4.6-十进制转换成十六进制

    P24-4.7-十进制快速转换成十六进制

    93-》80+13
    80-》5* 16
    13-》D
    5D
    不能够超过255

    P25-4.8-十六进制和二进制之间快速互相转换(重要)

    9 A
    9 10
    1001 1010

    3 F
    0011 1111

    E 9 3 C
    14 9 3 12
    1110 1001 0011 1100

    111 1010 1011 1101
    7 10 11 13
    7 A B D

    1 1110 1011 1111
    1 14 11 15
    1 E B F
    在这里插入图片描述

    P26-4.8-反过来思考

    1110=15-1
    1101=15-2
    1011=15-4
    0111=15-8
    通过·观察

    P27-5.1-二进制和汇编语言的关系

    计算机是由什么驱动的?

    光有电?
    机器由很多的部件组成的,组织在一起运行,
    指令
    告诉他们这里怎么做,那里怎么做
    机器指令 010101010101 B
    CPU部件 中央处理器
    将一串二进制数字转换成为高低电平 驱动计算机的运行
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wLZHi4yq-1604226576033)(en-resource://database/839:1)]

    冒号左边一串相同的十六进制数字:某种编号 十六进制数字 一些英语单词的简写 一些数字
    A=10
    B=11
    C=12
    D=13
    E=14
    F=15
    机器指令 汇编指令
    74 03 JZ 0105
    0111 0100 0000 0011
    E9 97 00 JMP 019C
    1110 1001 1001 0111 0000 0000
    B8 05 00 MDU AX,0005
    1011 1000 0000 0101 0000 0000
    在这里插入图片描述

    展开全文
  • 有趣的二进制

    2017-11-15 02:06:57
    优秀应用算法都大量用到位运算,而位运算在工作中很少用到,所以借助其算法,我们看一下位运算的优势以及应用,但是大多数教材只会教大家二进制和十进制如何互换,都是死记硬背式的,并没有去讲解真正含义,换一个...

    优秀应用算法都大量用到位运算,而位运算在工作中很少用到,所以借助其算法,我们看一下位运算的优势以及应用,但是大多数教材只会教大家二进制和十进制如何互换,都是死记硬背式的,并没有去讲解真正含义,换一个进制之后,依然不会,我们回到最根本的一些计数方法上,从10进制来推算,希望用一种更简单的方式介绍其原理。


    一、应用引入

    我们来看下protobuf 中的Varint算法,这个算法的目的是为了令一个整型占用更少的字节,比如小于127的数字,只需占用一个字节即可,小于16384的数字,采用2个字节即可。算法如下:

     while (true) {
      if ((value & ~0x7F) == 0) {
        buffer[position++] = (byte) value;
        return;
      } else {
        buffer[position++] = (byte) ((value & 0x7F) | 0x80);
        value >>>= 7;
      }
    }复制代码

    我们来看看具体图例:

    我们看到在小于2097153期间,占用空间会小于4个字节,这个优势还比较明显,不过也有弊端,比如超过268435456之后会有占用5个字节,考虑到大多数情况下,并不会应用到这么大的数字,优化空间方面还是不错的。

    通过上述算法实现,我发现优秀的应用算法都会大量用到了位运算,而位运算在工作中却很少用到。位运算速度要快于整数运算的,特别是整数乘法,需要10个或者更多个时钟,若果采用移位操作一个或者2个时钟就够了,不过由于我们常采用十进制来进行算术运算,对二进制的位运算不够熟悉,阅读起来会比较耗费精力,所以借助上述算法实现,我们分析一下位运算的优势以及应用,从而更好的理解二进制。上述代码中,有运用到移位操作,位运算,字节序等相关知识点,我们一一分析。


    二、进位制

    我们知道,计算机的存储和处理的信息都是以二进制的,虽然在编写程序的期间数运算还是采用10进制表示,但到机器执行的时候,还会以2进制来进行处理。对于有10个指头的人来说,熟知10进制是很自然的事情,你看教小孩子数学的时候,都是先从数指头开始的,那么若是我们只有2个指头,是不是我们现在会更好理解二进制了?


    1、其他进制转换10进制

    大多数教材会教大家二进制和十进制如何互换,但多数说都是死记硬背式的,并没有去讲解真正含义,换一个进制之后,依然不会,我们回到最根本的一些计数方法上,从10进制来推算。比如我们看一个数字1001,采用十进制表示是:1x10^3+0*10^2+0*10^1+1*10^0。首先从右往左,我们可以看成是从低位到高位,每高一位,指数+1,其次10进制是以10为底数,其三这个公式是采用10进制算术进行计算的(用什么进制算出答案就相当于把当前进制转换为了什么进制了)。这个方式适合所有的进制转换,理解了这个,后续的进制转换都会很容易理解。


    2进制的比较简单,我们直接忽略,我们来看下应用到3进制,同样是1001,转换10进制公式:1x3^3+0*3^2+0*3^1+1*3^0=28,我们发现只是底数改变,因为是3进制,所以以3为底数,另外计算方式还是采用10进制算式计算,这表明用10进制算出的答案,就相当于3进制转换为10进制,1001转换为10进制就是28。

    那为何不采用其他进制来计算?

    采用其他进制计算,那么其他进制的乘法口诀你的熟练一遍了,比如10进制的99乘法口诀,你用其他进制的乘法口诀得自己来演绎一遍了,如此这个和我们的常用习惯有些相驳,换算起来会比较慢,所以一般采用十进制与其它进制互转或者作为中间步骤来处理。


    2、10进制转换为其他进制

    采用上述方法后,我们已经可以做到所有进制转换,包括10进制转3进制,比如十进制28转换为3进制28=2*3+22,这个采用3进制(3的三进制表示10)来进行计算,但是会很麻烦。所以10进制转换其他进制,我们常采用短除法,如下:

    当前数不断除以3并把余数作为新的最高位,28除以3余1,1为“个位”,9除以3余0,0为“十位”,3除以3余0,0为“百位”,最终的1是“千位”。

    如果我们有注意到前面的3进制转10进制算法,我们可以发现短除法其实是3进制转10进制的逆操作,比如3进制转换为十进制时候是:1*3^3+0*3^2+0*3^1+1*3^0 ,我们转换一下是((1*3+0)*3+0)*3+1,如此和10进制转换3进制的时候逆向操作。


    三、小数

    如果前面的理解了,小数就可以很容易理解了,我们还是先从10进制来看。比如十进制12.34,我们看小数后面十分位部分.3,表示把1分为10份只取3份,.04百分位部分是把1分为100份,取4份。那么我们换成公式:


    12.34=1*10^1+2+3*(1/10)+4*(1/100)
         =1*10^1+2+3*10^-1+4*10^-2复制代码

    我们看到小数部分还是以进制为底数,不过指数部分采用了负数,点的左边的位的指数是位的正幂,点数的右边是位的指数负幂。理解了这个,其他进制的小数部分也就了解, 它们是相同的,比如二进制1001.101:

    有了这个理解,我们后续的浮点数就比较好理解了,IEEE浮点表示浮点数,也是基于这种方式,只是定义了些规范,后续我们会详细了解。


    四、移位操作

    常见的移位操作有三种:左移,逻辑右移,算术右移。

    移动操作

    操作
    参数x[01100011] [10010101]
    x<<4[00110000] [01010000]
    x>>4(逻辑右移)[00000110] [00001001]
    x>>4(算术右移)[00000110] [11111001]


    1、左移

    x向左移动k位,会丢弃最高的k位,并在右端补k个0,也就是常说的当前值乘以2的k次方。为何是乘以2的k次方?我们看10进制的时候,某数乘以10,就是在末尾增加1个0 ,由此我们可以联想到,二进制左移一位(末尾加一个0)相当于乘以2,这个结论普遍存在于所有进位制中:k进制数的末尾加个0,相当于该数乘以k。

    我们从图中可以看到,左移动一位,就相当于进位制展开式的每个指数都加1,如此移动一位,就相当于当前数(1*2^5+1*2^1+!*2^0)*2^1=1*2^6+1*2^2+1*2^1


    2、右移

    理解了左移的原理,右移动的原理也是相同的,右移k位=进位制展开式的每个指数都减k,也就是当前数除以进制的k次方。唯一不同的是分为逻辑右移和算术右移。

    逻辑右移就是无符号移位,右移几位,就在左端补几个0,比如上边 Varint中每次右移7位,相应的当前数高位就会补充7个0。

    算术右移动是有符号移位,和逻辑右移不同的是,算术右移是在左端补k个最高有效位的值,如此看着有些奇特,但对有符号整数数据的运算非常有用。我们知道有符号的数,首位字节,是用来表示数字的正负。负数采用补码形式来存储,比如[11100110],10进制是-26,算术右移1位之后[11110011],10进制是-13,如若不是补最高有效位的值1而是补做事0的话,右移之后就变成正数了。


    五、字节序

    单个字节并没有字节序的问题,当一个数据需要多个字节存储的时候,就会牵扯到这样的问题,这个数据的地址是什么,存储器中如何排列这些字节,是高位地址存最高有效位,还是低位地址存最高有效位。

    比如一个int类型的变量,它的地址是使用字节中最小的地址,比如在存储器上的位置是0x101、0x102、0x103,它的地址是0x101,若是这个数据是一个w位的整数,位表示为[x(w-1),x(w-2)....,x1,x0],那么其中x(w-1)是最高有效位,x0是最低有效位,w若是8的倍数,位被分组成字节,那么最高有效字节是[x(w-1)...x(w-8)],最低有效字节是[x7,x6...x0]。这个也可以成为物理顺序,和我们普通人理解的存储顺序预期相符合,比如十进制也是高位(百位,10位)在地位(个位)前面。


    1、小端法(little endian)

    如果字节的逻辑顺序与物理顺序相反,也就是w的最低有效字节在前面[x7,x6....x0],最高有效字节[x(w-1)...x(w-8)]在后面,此时成为小端法(little endian)。多数intel兼容机都采用这种规则。

    2、大端法(big endian)

    如果字节的逻辑顺序与物理顺序相同,也就是w的最低有效字节[x(w-1)...x(w-8)]在前面,最高有效字节[x7,x6....x0]在后面,称为大端法(big endian),大多数IBM和SunMicrosystems的机器都是采用这种规则。


    比如一个十六进制数:0x01234567,我们用大端小端法看他们在存储器上的位置。

    我们可以看到大端法是比较符合我们习惯的,高位在前地位在后。

    上述Varint的算法,是采用小端法来存储字节顺序的。

     buffer[position++] = (byte) ((value & 0x7F) | 0x80);复制代码

    每次都是获取当前数据的后7个字节存储到数据流buffer里面,也就是低位字节放在buffer字节数组的前面。

    ----------------------------------------------end------------------------------------------------

    扫描关注更多,关注个人成长和技术学习,期待用自己的一点点改变,带给你一些启发及感悟。




    展开全文
  • 二进制的起源

    千次阅读 2014-10-06 21:59:51
    二进制数是用1和2两个数数码来表示的数。它的基数为2,进位规则是...尽职最大的优势在于:技术实现简单,计算机室由逻辑电路组成,逻辑电路通常只有两个状态,开关的几桶与断开,这两种状态正好可以用 “1”和“0”表
      二进制数是用1和2两个数数码来表示的数。它的基数为2,进位规则是“逢二进毅”,借位规则是“借一当二”,由18世纪德国数理哲学大师
    莱布尼茨发现。二进制现在已经成为计算机技术中广泛采用的一种数制,可以说没有二进制就没有被称为第三次科技革命的计算机革命。二
    尽职最大的优势在于:技术实现简单,计算机室由逻辑电路组成,逻辑电路通常只有两个状态,开关的几桶与断开,这两种状态正好可以用
    “1”和“0”表示。一份弥足珍贵的手稿,其标题为:“1和0,一切数字的神奇渊源。这是造物的秘密美妙的典范,因为,一切无非都来自上
    第。”这是德国天才大师布莱尼茨的手迹。但是,关于这个神奇美妙的数字系统,布莱尼茨只有几页一场精炼的描述。二莱布尼茨的研究成果
    与中国古代的一本著作有着莫大的关联,这本书便是《周易》但我们要知道的是,将二进制与古代中国《周易》相联的尝试是不符合实际的。
    大约产生于公元前第一个一千年的初期的《周易》,开始也主要是一部站不用书,里边的两个符号可能分别代表“是”和“不”,这本书只
    能不对莱布尼茨的研究有参考和启发的作用,如果就此说二进制乃是起源于古代中国,《周易》便是二进制的起源,那么就牵强附会了。但就连
    莱布尼茨都没有想到的是:他的二进制数学只想的不是古代中国,二是未来。莱布尼茨在1679年3月15日记录下他的二进制塔西的同时,还涉及
    了一台可以完成数码计算机的机器。我们今天的现代科技将此设变为显示,这在莱布尼茨的时代是超乎认得想象能
    
    展开全文
  • 解决此类问题方法可能不止以下这两类方式(十进制转化为其它进制也是同样道理,在此仅以转化为二进制为例),在此只对两类方式一种解法加以解释,其余方式暂不再此次讨论范围内。 方式一:递归 递归算法优势...
  • 众所周知,go语言可打包成目标平台二进制文件是其一大优势,如此go项目在服务器不需要配置go环境和依赖就可跑起来。 操作 需求:打包部署到centos7 笔者打包环境:mac os 方法:进入main.go所在目录,输入如下命令,...
  • 对于一整套系统和硬件完全一样机器,其实完全可以只在一台机器源码安装,然后打包好编译出来的二进制版本,拷贝到其他机器解压,直接进行一些配置即可。本篇文章就来介绍一下二进制版本安装配置MySQL整个...
  • 探讨二进制Edwards 曲线上的点压缩算法。分别给出了二进制Edwards 曲线的单点压缩算法和两点压缩算法。... 通过与对其他类型曲线上的点压缩算法对比,此点压缩算法在压缩带宽和恢复点开销两方面都有相应的优势
  • 据说各大数据库都是以哈希表为基础,但是哈希表不是不能直接寻址吗,存取效率应该比二进制低不少,为什么要选用哈希表而不是直接二进制
  • MySQL 二进制日志

    2020-08-04 14:52:52
    二进制日志1.1 概述1.2 日志格式1.2.1 STATEMENT1.2.2 ROW1.2.3 MIXED1.3 bin-log 开启2. 主从复制2.1 复制概述2.2 复制原理2.3 复制优势 1. 二进制日志 1.1 概述 二进制日志(BINLOG)记录了所有 DDL(数据定义...
  • geobuf, 用于地理数据的compact 二进制编码 Geobuf Geobuf是用于地理数据的compact 二进制编码。Geobuf为GeoJSON数据缓冲区压缩提供了无损的无损压缩压缩。 单独使用GeoJSON的优势:compact: 通常使 GeoJSON 6 sma
  • 二进制引入关联规则求解中,充分利用二进制操作方便、运算速度快、节省空间的优势。在求解事务项集真子集和支持度时,对事务数据库中相同事务只求解一次,并给出了真子集的具体求解算法。本算法一次扫描数据库可以...
  • XML正逐渐成为WWW数据表示和交换的标准,如何有效实现将二进制数据与XML文档有效集成是充分利用XML所提供的优势的重要方面。给出了二进制数据与XML文档集成的框架,提出了一种有效的二进制数据编码算法和与XML文档的...
  • 二进制 IO(全套)

    2020-08-20 11:35:41
    二进制文件的优势在于它的处理效率比文本文件高 在Java中如何处理文本I/O Java中许多用于各种目的的I/O类,通常分为输入类和输出类。输入类包含读数据的方法,而输出类包含写数据的方法,如PrintWriter是一个输出
  • Pillow image转二进制

    2020-04-03 11:08:58
    经常碰见图像转二进制的问题,总忘 有种方法需要将图片保存下来,然后再以二进制的方式读取,但这样显然会有io问题,关键的这图片下载下来也没用 使用管道可以避免存储到硬盘的问题 优势 在内存操作,速度快 ...
  • 文章目录c语言-DEM二进制文件读写环境代码要点参考代码 ...优势:数据写到文件效率最高方法是用二进制形式写入。二进制输出避免了再数值转换字符串过程中涉及开销和精度损失。但是二进制数据...
  • 公司的文件是以二进制的方式存在数据库中,表示不太理解这种方式有什么好处,大佬能告知下吗
  • Go打包二进制文件

    2020-12-15 09:32:28
    众所周知,go语言可打包成目标平台二进制文件是其一大优势,如此go项目在服务器不需要配置go环境和依赖就可跑起来。 2 操作 2.1 打包部署到centos7 2.1.1 打包环境:mac os 方法:进入main.go所在目录,输入如下命令...
  • 二进制安装MariaDB

    2017-09-24 13:11:44
    可自行下载二进制分发版软件包 众所周知,源码安装较于yum源的安装最有突出的优势在于自由灵活,可依据不同的环境和需求进行配置以及选择组件,并且可跨越平台的限制。但是,在源码安装给我们带来更大灵活性的同
  • 十六进制优势所在

    千次阅读 2008-08-27 12:04:00
    十六进制优势所在:1 与二进制转换方便,记住:8、4、2、1. "8421"2 数字长度比二进制短,与10进制相当。实际上在计算机内部使用的数字只有2进制的,也就是说只有0和1两个数字而已。 而16进制是计算机使用人员为了更好...
  • MySQL-5.7.17 二进制安装

    2017-09-11 14:12:01
    二进制安装相对于源码包安装的优势在于方便快捷,解压后无需编译,对于MySQL的安装,推荐使用二进制安装的方式,而5.6和5.7的安装步骤稍有不同,本文基于MySQL5.7.17的官方GA版本进行安装。 安装环境 Red ...
  • 二进制码与格雷码PK

    2020-07-17 21:04:02
    大家在写程序时候,可能会听闻,什么独热码,什么格雷码,什么二进制码等等,本节意在解释这几种编码之间区别和优势以及用verilog怎么去实现,下面先介绍这几种编码区别。
  • 网络划分和二进制

    2020-10-25 16:44:21
    这里写目录标题1....数字是信号的优势是看干扰能力强以及传输距离源并能保证质量 模拟信号和数字信号的根本区别就是传输的形式不一样,数字信号要比模拟信号稳定。数字信号比模拟信号好用多了,更加清晰,接受信号
  • 上一篇《有趣的二进制》我们讲到二进制的一些基础知识,但没有讲到位运算,有同学大呼不过瘾,那这一篇主要讲解下位运算的运用,还是从一个例子开始,希望对大家有启发。记得后面例子应用请自行mark,帮助很大。一、...
  • 通过二进制翻译手段将CUDA程序移植到其他异构众核处理器平台特别是国产处理器平台,对扩展CUDA程序应用范围,发挥目标平台众核优势以及支持民族产业都具有现实意义。设计了CUDA程序的二进制翻译框架,从CUDA程序可...
  • Table of Contents 1 把十进制整数的二进制表示打印在屏幕上 1.1 思路 2 解决方案 2.1 题后语 ...把十进制整数的二进制...C语言在处理位运算时有其天生的优势。 解决方案 #include <stdio.h> ...
  • AS3 XML二进制

    2013-10-09 14:45:46
    现在我以XML文件为例,讲讲怎样将XML文件变成二进制的压缩文件.以前习惯使用xml文件作为AS3的外部配置文件,它他来的好处是有的,比如分步式加载SWF美术资源文件,lang语言配置文件,Png动画文件等等,但是它任然有他的...
  • 我需要对一个文件做二进制差分压缩,我有一个文件的起始点,在之后的每次更改我都记录文件的二进制的差分,这样就可以通过起始点和差分文件计算修改后的文件。通过二进制差分可以用来提高文件保存磁盘读写速度,也...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,078
精华内容 431
关键字:

二进制的优势