zoukankan      html  css  js  c++  java
  • 数字逻辑的一些基本运算和概念

    进制转换

    基数:计数制中所用到的数字符号的个数,比如基数为R的计数制中,含0,1···R-1共R个数字符号,进位规律是“逢R进1”,称为R进制。
    位权:在一种进位计数制表示的数中,用来表明不同数位上数值大小的一个固定的常数。不同数位有不同的位权。
    比如2进制:10001,第一个1位上的位权为 2^4,第二个1位上的位权为 2^0。

    并列表示法:比如 1001001.
    多项式表示法:按权展开:1 x 2^6 + 1 x 2^3 + 1 x 2^0.

    二转十

    10110.101 = 1x2^4 + 1x2^2 + 1x2^1 + 1x2^-1 + 1x2^-3 = 16 + 4 + 2 + 0.5 + 0.125.

    十转二

    整数转换,除基数取余法:

    45 ÷ 2 = 22 ··· 1
    22 ÷ 2 = 11 ··· 0
    11 ÷ 2 = 5 ··· 1
    5 ÷ 2 = 2 ··· 1
    2 ÷ 2 = 1 ··· 0
    1 ÷ 2 = 0 ··· 1
    
    得到45的二进制 1 0 1 1 0 1,注意,按照从下往上的顺序。
    

    小数转换,乘二取整法:

    0.6875
    x    2
    ------
    1.3750 ··· 1
    x    2
    ------
    0.7500 ··· 0
    x    2
    ------
    1.5000 ··· 1
    x    2
    ------
    1.0000 ··· 1
    
    0.6875的二进制 0.1011,注意,按照从上向下的顺序。
    

    有些时候,无法用有限位二进制表示十进制的小数,就要根据题目的精度要求,将最低位进一然后舍去。

    此外,当一个十进制既有整数也有小数,只要把它们分开计算就好了。

    八进制,和十六进制,类比即可。需要注意的是:

    • 八转二的时候,每一位八进制数 用三位二进制表示即可,比如 732 -> 111 011 010;十六转二用4位二进制数即可。
    • 二转八的时候,不足补0,比如 二进制 1001 需要看做 001 001 再转成 11。
    • 二转十六的时候,数字十到十五需要用 A - E 表示。

    原码,补码,反码

    计算机涉及数字的符号问题的时候,需要补充一位符号位,一般在二进制数的最左边,以1为负,以0为正。

    原码:

    小数:
    大于0的小数X,原码为其本身;小于0的小数X,原码为 1-X(相当于在小数点前面补1)。比如:0.1011 -> 0.1011;-0.1011 -> 1.1011
    整数:
    大于0为它本身,或者在最高位前面补0;小于0在最高位的前面补1。比如:1101 -> 01101;-1101 -> 11101。

    反码:

    正数的反码为它本身;负数的反码:符号位不变,其他位按位取反。比如:0101111 -> 0101111;1101111 -> 1010000.
    整数的方法和小数的方法一样,只不过小数多加了一步,将符号变成小数点前面的1.

    补码:

    正数与原码,补码一样;负数为取反码之后在最低位+1,有进位则进位;小数和整数一样。

    补码反码的计算:

    反码的计算

    无论进行加还是减的运算,均可以通过加法实现。运算的时候,符号位一起参与计算。
    当符号位发生进位的时候,需要将进位加到运算结果的最低位,才能得到结果。

      111
    + 111
    -----
    1 110
    --->1
    -----
      111
    

    补码的计算

    与反码的计算不一样的地方在于,符号位发生进位的时候,将其丢弃。

      111
    + 111
    -----
    1 110
    ->Drop
    -----
      110
    

    几种常用的BCD编码

    目的:为了满足计算机使用二进制,而同时满足人们习惯十进制的需求,通常用四位二进制代码对十进制数字进行编码。称为 二-十进制代码。
    又称BCD码,具有二进制的形式,又有十进制的特点。

    十进制有 0-9 十个数字,就需要四位二进制来表示,一共 2^4 = 16种表示,就会有多余的六个二进制表示。
    不管哪种方案都会有多余的六个表示。

    分为有权码 和 无权码,有权码是用数字表示的名字,比如8421码,8421就是它的权值。

    8421

    权:8421;按照最简单的二进制进位来表示。

    0 0000
    1 0001
    2 0010
    3 0011
    4 0100
    ------
    5 0101
    6 0110
    7 0111
    8 1000
    9 1001
    
    多余的无效码:1010 -> 1111
    
    

    转换样例:
    (1)258 -> 0010 0101 1000 注意,十进制的每一位都要用四位二进制表示,并且不能舍去0!
    (2)0001 0010 0000 1000 -> 1208 按权转换,相加即可,比如 0010 = 8x0 + 4x0 + 2x1 + 1x0,就是BCD码的名字。

    如果在计算的过程中,出现了无效位,需要加6(0110)来得到正确的结果。

    2421

    权:2421;求法:0-4和8421一致,从5开始(比如取到了k,5<=k<=9),计算 9-k 的值,得到 9-k 的2421表示(和8421一样),然后按位取反。
    比如 求6的2421码:9 - 6 = 3;3的2421码 和 3的8421码一样 = 0011;按位取反 = 1100.
    因此,2421码是 对9的自补代码。

    0 0000
    1 0001
    2 0010
    3 0011
    4 0100
    ------
    5 1011
    6 1100
    7 1101
    8 1110
    9 1111
    
    多余的无效码:0101 -> 1010
    
    

    转换样例:
    (1)258 -> 0010 1011 1110
    (2)0010 0001 1110 1011 -> 2 1 8 5
    0010 = 2x0 + 4x0 + 2x1 + 1x0;1110 = 2x1 + 4x1 + 2x1 + 1x0

    5421

    权:5421;求法:前面五个 0-4 一样,最后五个,最高位取1,其它三位搬下来。
    比如 求5:5找0,0的表示为 0000,那么最高位置1,其它三位搬0000的后三位,形成 1000,就是5的5421码了。

    0 0000
    1 0001
    2 0010
    3 0011
    4 0100
    ------
    5 1000
    6 1001
    7 1010
    8 1011
    9 1100
    
    多余的无效码:0101 -> 0111(3个);1101 -> 1111(3个)
    
    

    转换样例:
    (1)258 -> 0010 1000 1011
    (2)0010 0001 1100 1011 -> 2 1 9 8
    0010 = 5x0 + 4x0 + 2x1 + 1x0;1100 = 5x1 + 4x1 + 2x0 + 1x0

    无权码:余3码

    就是8421码+3。它也是对9的自补代码。

    0 0011
    1 0100
    2 0101
    3 0110
    4 0111
    ------
    5 1000
    6 1001
    7 1010
    8 1011
    9 1100
    
    多余的无效码:0000 -> 0010;1101 -> 1111
    
    

    转换样例:
    (1)258 -> 0101 1000 1011
    (2)1000 1001 1001 1011 -> 5 6 6 8
    1000 = 8x1 + 4x0 + 2x0 + 1x0 - 3 = 5;1001 = 8x1 + 4x0 + 2x0 + 1x1 - 3 = 6

    注意,如果计算没有涉及到进位,则需要-3,如果涉及到进位,则要先按照8421码的更改+6 然后再-3,也就是 +3。

    2016/9/9

  • 相关阅读:
    循环图片 yi
    给大家一个经典的.net情感故事 yi
    [东邪西毒][程序员版][原版][剧情] yi
    Sqlite 使用笔记 中文显示为乱码 yi
    sql2005安装过程,(不装C盘) yi
    Visual Studio 2010 美女与程序员的爱情网剧全集 yi
    IT行业几大职业病 yi
    标准化操作
    【ActiveMQ Tuning】Serializing to Disk
    我的山寨敏捷四季之春
  • 原文地址:https://www.cnblogs.com/qq952693358/p/5857234.html
Copyright © 2011-2022 走看看