2进制_2进制编码对应表 - CSDN
精华内容
参与话题
  • 为什么要使用进制数 数据在计算机中的表示,最终以二进制的形式存在 , 就是各种 <黑客帝国>电影中那些 0101010… 的数字 ; 我们操作计算机 , 实际 就是 使用 程序 和 软件 在 计算机上 各种读写...

    为什么要使用进制数

    数据在计算机中的表示,最终以二进制的形式存在 , 就是各种 <黑客帝国>电影中那些 0101010… 的数字 ;

    我们操作计算机 , 实际 就是 使用 程序 和 软件 在 计算机上 各种读写数据,
    如果我们直接操作二进制的话 , 面对这么长的数进行思考或操作,没有人会喜欢。

    C,C++ 语言 没有提供在代码直接写二进制数的方法。
    用16进制或8进制可以解决这个问题。
    因为,进制越大,数的表达长度也就越短。

    之所以 使用 16或8进制,而不其它的,诸如9或20进制 .

    是因为2、8、16,分别是2的1次方、3次方、4次方。这一点使得三种进制之间可以非常直接地互相转换 ;

    8进制或16进制 既 缩短了二进制数,还能 保持了二进制数的表达特点。转换还方便 .

    进制的介绍

    进制 : 是计算机中数据的一种表示方法。 N进制的数可以用0~(N-1) 的数表示, 超过9的用字母A-F 表示 .

    • 10进制

    先说 我们最 熟悉的 10进制 , 就是 用 0~9 的数表示 , 逢 10 进 1 .

    • 16进制

    如果是 16 进制 , 它就是 由 0-9,A-F组成, 与10进制的对应关系是:0-9 对应 0-9;A-F对应10-15;
    字母不区分大小写。

    • 2进制 和 8进制

    2进制 由 0-1组成

    8进制 由 0-7组成

    进制的转换公式

    1. 二进制转换十进制
      这里写图片描述
    2. 八进制转换十进制
      这里写图片描述
    3. 十六进制转换十进制
      这里写图片描述

    如何快速的进行 2进制,10进制,16进制 的 相互转换

    • 先记住二进制 的8421

    首先我们来看一个二进制数:1111,它是多少呢?
    你可能还要这样计算:1×2º+1×2¹+1×2²+1×2³=1×1+1×2+1×4+1×8=15。

    我们必须直接记住1111每一位的权值,并且是从高位往低位记,:8、4、2、1。 即,最高位的权值为2³=8,然后依次是 2²=4,2¹=2,2º=1。

    记住8 4 2 1,对于任意一个4位的二进制数,我们都可以很快算出它对应的10进制值。

    • 接下来我们练习 通过 8421 的方式 进行 快速的计算 , 2,10,16进制的转换

    1111 = 8 + 4 + 2 + 1 = 15 =F
    1110 = 8 + 4 + 2 + 0 = 14= E
    1101 = 8 + 4 + 0 + 1 = 13= D
    1100 = 8 + 4 + 0 + 0 = 12 =C
    1011 = 8 + 0 + 2 + 1 = 11= B
    1010 = 8 + 0 + 2 + 0 = 10 =A
    1001 = 8 + 0 + 0 + 1 =9 =9
    ……
    0001 = 0 + 0 + 0 + 1 = 1= 1
    0000 = 0 + 0 + 0 + 0 = 0= 0

    • 二进制数要转换为十六进制

    二进制数要转换为十六进制,就是以4位一段,分别转换为十六进制。
    如(上行为二制数,下面为对应的十六进制):
    1111 1101 , 1010 0101 , 1001 1011
    F D , A 5 , 9 B

    • 16进制数转换为二进制数

    反过来,当我们看到 FD时,如何迅速将此16进制数转换为二进制数呢?
    先转换F:
    看到F,我们需知道它是15(可能你还不熟悉A~F这五个数),然后15如何用8421凑呢?应该是8 + 4 + 2 + 1,所以四位全为1 :1111。
    接着转换D
    看到D,知道它是13,13如何用8421凑呢?应该是:8 + 4 + 1,即:1101。
    所以,FD转换为二进制数,为:1111 1101

    • 十进制数转换成2进制

    由于十六进制转换成二进制相当直接,所以,我们需要将一个十进制数转换成2进制数时,也可以先转换成16进制,然后再转换成2进制。
    比如,十进制数 1234转换成二制数,如果要一直除以2,直接得到2进制数,需要计算较多次数。所以我们可以先除以16,得到16进制数:
    被除数 计算过程 商 余数
    1234 1234/16 77 2
    77 77/16 4 13 (D)
    4 4/16 0 4
    结果16进制为:4D2
    然后我们可直接写出4D2的二进制形式:
    0100
    1101
    0010
    其中对映关系为:
    0100 – 4
    1101 – D
    0010 – 2

    • 二进制数转换成10进制数

    同样,如果一个二进制数很长,我们需要将它转换成10进制数时,除了前面学过的方法是,我们还可以先将这个二进制转换成16进制,然后再转换为10进制。
    下面举例一个int类型的二进制数:

    01101101 11100101 10101111 00011011

    我们按四位一组转换为16进制:6D E5 AF 1B
    十进制转十六进制
    采余数定理分解,例如将487710转成十六进制:

    487710÷16=30481….14(E)
    30481÷16=1905….1
    1905÷16=119….1
    119÷16=7….7
    7÷16=0….7
    这样就计到487710(10)=7711E(16)

    展开全文
  • 进制

    千次阅读 2019-05-19 21:34:16
    进制是一套计数方法,每个位置上的数有 2 种可能(0 - 1);二进制是计算机的执行语言,但是早在计算机出现前就存在这套计数方法,最早可追溯到古埃及。在日常生活中,我们使用的是十进制,每个位置上的数有 10 种...

    转载:http://rkhcy.github.io/2019/03/12/binary

    什么是二进制

    二进制是一套计数方法,每个位置上的数有 2 种可能(0 - 1);二进制是计算机的执行语言,但是早在计算机出现前就存在这套计数方法,最早可追溯到古埃及。在日常生活中,我们使用的是十进制,每个位置上的数有 10 种可能(0 - 9),在了解二进制前,先看下十进制是如何运作的。

    如十进制下的 101;这里有两个 1 ,代表不同的含义,左边的代表 100 ,右边的代表 1 ,因为左边的 1 在百位,而右边的 1 在个位,同理,中间的 0 在十位。所以十进制的 101 是 “ 百位为 1 ,十位为 0 ,个位为 1 ”,这里的位数对应的是 10 的幂:

    • 100 = 1;
    • 101 = 10;
    • 102 = 100;
    • 103 = 1000;

    二进制的位数对应的是 2 的幂:

    • 20 = 1;
    • 21 = 2;
    • 22 = 4;
    • 23 = 8;


    所以二进制下的 101 代表 5。下图是二进制的前十位:

    二进制转换

    计算机运行的是二进制,但是我们在键盘上输入的并非二进制的内容,而是字母、数字(十进制)、汉字等,那计算机是怎么知道把这些内容转成二进制呢?计算机是人设计的,在了解计算机将我们输入的内容转成二进制前,先简单看下十进制和二进制的转换。这里的套路是:

    1. 算出 2 的 n 次幂不大于要表示的值;
    2. 用要表示的值减去 2n,得到剩下的值后,重复步骤 1,直到最后剩下 0 为止。

    举个例子,十进制的 107 如何转成二进制,先找出 2 的 n 次幂不大于 107 ,算得 n = 6,用 107 减去 26 得到 43;重复下来后 :

    107 = 1 x 26 + 1 x 25 + 0 x 24 + 1 x 23 + 0 x 22 + 1 x 21 + 1 x 20 ,如果该位用到,用 1 表示,否则用 0 表示。所以 107 用二进制表示为:01101011



     

    二进制转成十进制就是相反的过程,如 01011001 转成十进制:

    01011001 = 0 x 27 + 1 x 26 + 0 x 25 + 1 x 24 + 1 x 23 + 0 x 22+ 0 x 21 + 1 x 20 = 89

    什么是比特

    计算机拥有数十亿超小型的数字电路,这些电路由开关组成,并且开关的状态只有开或关,分别代表二进制中的 1 和 0 。回想那些年我们逃过的数字电路课,依稀记得当时通过调节其中部分电路开关,决定是否让电流通过,可以看到对应开关上的红灯是否被点亮。



     

    计算机中最小的存储单位是二进制位(binary digit),也叫比特, bit 只能够存储 0 或 1 ;而要存储额外的信息(如更大的十进制数),计算机通过串联这些 bit 来完成。这正是它牛逼的地方,只要开关足够多,它可以通过这些 0 和 1 代表任何内容。由 8 bit 串联组成的称为字节(byte),1 个字节可以代表 256 种不同的可能(28),2 个字节可以代表 65,536 种不同的可能(216),而这只需要 16 个开关 …

    内存是怎么工作的

    计算机运行的二进制存储在内存当中,这里的内存英文是 random access memory (RAM) ,那么它的结构是怎样的呢?可以把内存想象成一个大的书架,这个书架有几十亿层 … 每一层都有编号,把每一层的编号称为地址,每一层有 8 个 bit 用来存储数据。如下:



     

    同时,有一个用于执行内存操作的处理器内存控制器,内存控制器负责接收处理器的指令,对内存执行读写操作,它可以直接操作内存这个大书架的的每一层,如下:



     

    这里的直接操作有多屌?它意味着我们可以先访问 0 号地址的数据,然后直接访问 12345 号的数据,而不需要在 RAM 这个大书架中挨个寻址到 12345 号。这也是random access memory (RAM)这个名字的由来 — “ 立即访问内存的中随机地址”

    虽然内存控制器能够在相隔很远的内存地址间快速切换,但是它还是倾向于访问相邻的地址的内存,计算机在这方面做了优化。处理器有一个缓存用来保存最近从 RAM 中访问的数据的副本,如下:



     

    处理器从缓存中读取数据的速度快于 RAM ,因此缓存的出现有助于我们节省时间。当处理器下达指令要内存处理器去访问某个内存地址时,内存处理器其实还把要访问地址的相邻地址的内容一起返回给处理器,处理器把这些内容存储在缓存中。

    假如处理器想按顺序,先后访问地址 951、952、953、954 … 在第一次读取地址 951 时就会把所需的内容全部取出来放到处理器的缓存中,之后 952 、953、954 的读取则是通过快速的缓存读取方式获得。

    但是假如处理器先后访问的地址是 951、321、146 … 那此时的缓存就帮不上忙了,内存管理器每次都得老老实实的去 RAM 区获取数据,当然速度就会比上面的慢了。

    二进制表示数字

    上面我们已经知道如何用二进制表示十进制,日常生活中使用的数字范围在在计算机中可以用 4 或 8 个字节(32 或 64 bit)来表示:

    • 4 比特可以表示的数字范围:2147483648 ~ 2147483647
    • 8 比特可以表示的数字范围:9223372036854775808 ~ 9223372036854775807

    二进制还可以用来表示分数、小数、负数:

    • 分数:分别储存两个数:分子和分母
    • 小数:分别存储两个数:去掉小数点后的数字;小数点出现的位置
    • 负数:二进制位中最左边的那一位代表符号,0 表示正数,1 表示负数;

    二进制表示字符

    了解了计算机如何用二进制表达数字(十进制),那么计算机如何用二进制表达字符呢?计算机用到了编码(encoding)。编码就是一套数字和字符间的映射关系,有许多不同的编码格式,举个常用的例子: ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)。ASCII 编码表可以翻译数字、大小写字母、以及常用的一些特殊符号,有了这套规则,计算机就知道如何应对我们输入的内容了:



     

    假设我们输入的内容为 NICE ,通过 ASCII 编码表首先转化成十进制为:

    78 73 67 69

    再转成二进制:

    01001110 01001001 01000011 01000101

    观察上面这个例子发现

    • 一个字符需要 8 bit 来表示,也就是 1 byte

    • 二进制表示字母都以 0 开头

    看起来只需要 7 bit 就能表达一个字符,第一个 bit 总是 0 ,给人的感觉好像是浪费了 1 bit,那么当初设计这个表的时候难道没发现这个 bug 么?再看一眼上面的 ASCII 表,我们发现表中缺了很多其他特殊符号,如 é、æ 等等,这些符号计算机要怎么用二进制表达呢?最初设计的 ASCII 编码表只用到了 7 bit ,因此有 128 种可能,再把第一位利用起来,ASCII 编码表就得以翻倍扩展



    还有其他方式可以对字符编码,例如 Unicode 编码表,可以用来表达世界上各个国家的字符,区别在于每个字符占用 2 个 byte(这样理论上一共最多可以表示 216(即 65536 )个字符。基本满足各种语言的使用。实际上当前版本的 Unicode 码并未完全使用这 16 位编码,而是保留了大量空间以作为特殊使用或将来扩展)。这些编码的核心思想是一致的:建立一套规则作为抽象层,用来简化我们在字符和二进制之间的转化方式。

    Enjoy –☺

    展开全文
  • 进制 计算

    万次阅读 2019-05-08 11:54:36
    2、减法法则: 0 - 0 = 0 1 - 0 = 1 1 - 1 = 0 0 - 1 = 1 有借位,借1当(10)2 0 - 1 - 1 = 0 有借位 1 - 1 - 1 = 1 有借位。减法,当需要向上一位借数时,必须把上一位的1看成下一位的(2)10。 3、乘法法则: 0×...

    1、加法法则: 0+0=0,0+1=1+0=1,1+1=10  

    2、减法法则: 0 - 0 = 0 1 - 0 = 1 1 - 1 = 0 0 - 1 = 1 有借位,借1当(10)2 0 - 1 - 1 = 0 有借位 1 - 1 - 1 = 1 有借位。减法,当需要向上一位借数时,必须把上一位的1看成下一位的(2)10。   

    3、乘法法则: 0×0=0,0×1=1×0=0,1×1=1  

    4、除法法则: 0÷1=0,1÷1=1  除法应注意: 0÷0 = 0 0÷1 = 0 1÷0 = 0 (无意义)  

    扩展资料

    二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。

     

     

    将正的十进制数除以二,得到的商再除以二,依次类推知道商为零或一时为止,然后在旁边标出各步的余数,最后倒着写出来,高位补零就OK咧。

    展开全文
  • 进制详解

    万次阅读 2018-06-25 17:22:30
    那如何把一个十进制的数转成二进制或者其他进制,请下图:十进制转二进制进制的123转成二进制就是1111011,转成几进制都是一个道理。一、二进制1.1 二进制是计算机采用的表示数字的方式, 每个数位上只有0和1;1.2 ...

    在计算机的世界里,只有0和1,也就是二进制。

    那如何把一个十进制的数转成二进制或者其他进制,请下图:

    十进制转二进制

    十进制的123转成二进制就是1111011,转成几进制都是一个道理。

    一、二进制

    1.1 二进制是计算机采用的表示数字的方式, 每个数位上只有0和1;

    1.2 任何整数一定可以采用二进制的方式表示, 小数的二进制这里不多说;

    1.3 字节内部采用二进制方式记录数字, 一个字节分成八段, 每个分段有一个编号, 最右边分段编号是0, 向左逐渐递增

    1.4 相邻分段之间有2倍关系, 某个分段的数字相当于2的编号次方, 如图:

    二进制转十进制:

    把每个数位单独转换后把所有的转换结果求和

    例:01001110 = 2^6 + 2^3 + 2^2 + 2^1 = 64 + 8 + 4 + 2 = 78

    十进制转二进制:

    方法一:(不适用于处理大数字)先把十进制数字拆分成多个2的整数次方之和, 然后对每个结果单独转换, 最后其他数位补0。

    59 = 32 + 16 + 8 + 2 + 1 = 2^5 + 2^4 + 2^3 + 2^1 + 2^0 = 00111011

    方法二:除2取余, 逆序余数;

    上述两种方法算出来的是二进制原码

    计算机字节里采用二进制补码记录数字

    所有非负数整数, 补码和原码一样

    二、八进制

    2.1 把二进制表示方式的所有数位从右向左每三个数位分成一组, 每组用一个0到7之间的数字代替可得到八进制表示方式

    2.2 每三个数位可以采用421方法把二进制转化成八进制

    2.3 可以在程序中使用八进制表示数字, 为了避免与十进制混淆, 需要在八进制前面加0(零)

    2.4 %o可以作为八进制数的占位符

    结果:

    152 106

    152 152

    三、十六进制

    3.1 所有数位从右向左每四个数位分成一组, 每组用一个字母替换就得到对应的十六进制表示方式, 先把每组转换成十进制, 转换结果如果在0到9之间则用阿拉伯数字字符替换, 否则用‘a’到'f'这六个英文字母替换

    3.2 每四个数位可以采用8421方法把二进制转化成十六进制

    3.2 可以在程序中使用十六进制表示数字, 但是必须以0x做开头

    3.3 %x %X 可以作为十六进制数的占位符(%x输出a-f, %X输出A-F)

    0xab 0XAB

    练习: 十进制转二进制

    四、负数的二进制

    4.1 先计算出相反非负数的二进制

    4.2 把第一步的计算结果每个数位变成相反内容, 然后再加一

    求:-5的二进制:

    5: 0000 0101

    取反: 1111 1010 + 1

    -5: 1111 1011

    4.3 上述方法算出来的是二进制补码, 可以直接记录在字节中

    4.4 有符号的二进制补码中最左边的数位叫做符号位, 符号位是0表示正, 1表示负, 且符号位不能等同与正负号

    4.5 当把一个占地大的整数类型数据赋值给占地小的整数类型存储区时只会保留部分二进制数据, 因此导致十进制表示方式发生变化。

    4.6 当把一个占地小的整数赋值给占地大的整数类型存储区时要扩充二进制数位, 在有符号位的情况下扩充出来的二进制里全是符号位的数值, 无符号数据填充0;

    ch = 44

    num = 44

    分析:300是整数占四个字节, 用二进制表示如下(ps: 只保留最右边的)

    00000000 00000000 00000001 00101100

    练习:计算下面的结果(结果在下方)

    ch = -56

    num = -56


    展开全文
  • 2进制-16进制-补码

    千次阅读 2019-08-01 08:41:19
    进制的计算 10进制 规律: 逢10进1 ...2进制 规律: 逢2进1 数字: 1 2 权(weight): …32 16 8 4 2 1 基数(base): 2 计算机为啥使用2进制: 2进制其设备制造成本低!适合规模化生产 * 00000000 00000000 000...
  • -2进制

    2019-07-17 01:10:14
    懵~ 后来问别人,他让我试着用二进制反推十进制,就晓得了(用(-2)^n)。 这个是学长写的代码 //我写的时候,将它先变成二进制,再给每一个奇数位且值为1的数组的后一位+1,但学长是每得一位就让后面一位变化,也...
  • 把10进制转化为2进制

    2019-05-06 17:51:01
    把10进制转化为2进制 public static String to2(int n) { String s=""; if(n<2) { return n+""; } while(n>0) { s=n%2+s; n=n/2; } return s; } 这里转换的是254,输出的结果为:
  • 2进制(计算机基础)

    2019-09-29 22:50:45
    2进制 权位法 补码 2进制原码和补码之间的运算 为什么使用16进制? 2进制运算 (1)按位与计算 (2)按位或计算 (3)按位取反 (4)按位异或 进制之间的相互转换 (1)2进制转换为10进制(常用) (2)...
  • Java_2进制

    2020-06-03 19:40:42
    2进制 int n = 45; System.out.println(Integer.toBinaryString(n)); 计算机的内部(Java)只有2进制数据,在显示的时候编程语言提供API将2机制转换为10进制显示出来。 计算机只能处理2进制数据,利用编程语言提供...
  • 进制整数转换成二进制采用“除2倒取余”,十进制小数转换成二进制小数采用“乘2取整”。 例题: 135D = __ B 解析:如下图所示,将135除以2,得余数,直到不能整除,然后再将余数从下至上倒取。得到结果:1000 ...
  • 进制如何转十进制,十进制如何转二进制

    万次阅读 多人点赞 2018-04-06 22:20:39
    学计算机的朋友刚开始学习时都要接触进制之间的转换,二进制、十进制、八进制、十六进制等,这个是很枯燥的,转来转去就转蒙圈了,别蒙别蒙,今天咱们一个一个搞定,看看二进制和十进制之间如何相互转换的。...
  • 进制、八进制、十进制、十六进制关系及转换

    万次阅读 多人点赞 2020-03-11 16:45:22
    进制,八进制,十进制,十六进制之间的关系是什么?浮点数是什么回事? 本文内容参考自王达老师的《深入理解计算机网络》一书&amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;中国水利水电出版社&amp;amp;amp;amp...
  • 进制、八进制、十进制、十六进制之间的转换

    万次阅读 多人点赞 2018-12-28 23:55:23
    目录  1.十进制转2进制  2.二进制转十进制  ...
  • python将二进制转换为十进制

    万次阅读 多人点赞 2017-05-15 08:49:23
    例:将1110110转换为十进制数 解:先将其转换为字符串,再使用int函数,指定进制转换为十进制。 print(int("100111",2))
  • b=dec2bin(22) %将10进制转换为2进制b =10110&gt;&gt; c=hex2dec('9B3C') %将16进制转换为10进制c = 39740&gt;&gt; d=dec2hex(97) %将10进制转换为16进制d =61&gt;&...
  • python 十进制转二进制

    万次阅读 多人点赞 2019-06-24 16:57:37
    python 十进制转2进制有内置函数 bin 方法1: in:bin(1) output:'0b1' 方法2: n = int(input('请输入要转换进制的数值:')) # x = 2 # 转换为二进制,所以这里取x=2 b = [] # 存储余数 while True: # ...
  • 计算机2进制、4进制、8进制、10进制、16进制、32进制计算规则
  • 进制转二进制 bin(18)--&gt; '0b10010' 去掉0b就是10010 即为十进制18转二进制是10010十进制转八进制oct(18) --&gt;'022' 去掉0 就是22 即为十进制18转八进制是22十进制转十六进制hex(18) --&gt;'...
  • 进制转二进制函数实现(C语言)

    万次阅读 多人点赞 2020-05-09 22:37:00
    代码: void dectobin( int n ){ int result=0,k=1,i,temp; temp = n; while(temp){ i = temp%2; result = k * i + result; k = k*10; temp = temp/2; } printf("%d\n", result); }
  • python实现 -十进制转二进制

    万次阅读 2018-06-05 10:30:46
    # 二进制的转换 def Dec2Bin(dec): result = '' if dec: result = Dec2Bin(dec // 2) return result + str(dec % 2) else: return result print(Dec2Bin(123456))
1 2 3 4 5 ... 20
收藏数 1,502,018
精华内容 600,807
关键字:

2进制