zoukankan      html  css  js  c++  java
  • noip初赛知识点

    (1)进制转换

    十进制转二进制

        十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为止。

    运用短除法取余数,从下往上。

    十进制转二进制小数

    乘二取整数,用小数计算。

    从上往下

    二进制转十六进制

        

    以小数点为分界,四位一组,一一对应。

    十六进制转二进制

    将二转十六反过来,一一对应。

    二进制转八进制

    以小数点为分界,三位一组,一一对应。

    八进制转二进制

    将二进制转八进制翻转。

    x进制转十进制

    根据位的高低a1*x^y.

    (2)位运算摘自 http://www.cnblogs.com/llllllpppppp/p/7652380.html

    与(按位与& 逻辑与∧) 11取1 其它取0

    或(按位或| 逻辑或∨) 00取0 其它取1

    异或(按位异或^) 一样取0 不一样取1

    取反(按位取反~ 逻辑取反﹁或!) 1变0,0变1

    优先级:~ > & > ^ > |

    位运算:

    对于两个数进行按位运算时,先将两个数转化为二进制(小数点对齐),然后将每一位都进行逻辑运算(注意空位补0)

    比如,计算21^2

    先转换为二进制

    21=(10101)2

    2=(10)2

    然后按位进行逻辑异或运算

    10101

    ^   10

    ————

    10111

    最后得出结果(10111)2=23

    逻辑运算:

    判断逻辑运算式的真假值时,把数带进去算一下就好了

    例:A=true,B=false,C=false,D=true时

    (A∧B)∨(C∧D)=0

    ((A∧B)∨C)∧D=0

    A∧((B∨C)∨D)=1

    (A∧(B∨C))∨D=1

    (A∨B)∧(C∨D)=1

    遇到这种题细心计算就好了

     

    (3)八大排序

    转自http://blog.csdn.net/whuslei/article/details/6442755/

     

    (4)遍历

    例子

    先序遍历

    原则 从根节点开始能左则左,不能就往右。

    样例:1 2 4 5 3 6

    中序遍历

    原则 先找到最左,然后他的父亲节点,然后往右。左中右

    样例:4 2 5 1 6 3

    后序遍历

    原则 先找到最左,然后右,然后父亲节点 。 左右中

    样例:4 5 2 6 3 1

    (5)表达式

    前缀表达式

    样例:+3*2+5 12

    方法:依次进栈,当遇到连着的两个数就开始运算,用上一个运算符进行运算,结果进栈。

    样例+3*2 17    -->    +3 34    -->    37

    中缀表达式

    就是普通的表达式,直接运算。

    后缀表达式

    样例:3 4 + 5 × 6 - 

    样例:7*5-6                     35-6                        29

     

     (6)原码 反码 补码

    原码, 反码和补码的概念    对于一个数, 计算机要使用一定的编码方式进行存储. 原码, 反码, 补码是机器存储一个具体数字的编码方式。

     

    原码

    原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制

    1 对应 0000 0001    第一个0代表它是正数

    -1 对应 1000 0001   第一个1代表它是负数

    第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是

    1111 1111  到 0111 1111

    127 到 -127

    这是最容易理解的一种方式

    反码

    反码的表示方法是:

    正数的反码是其本身

    负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.

    再举个例子

    1 对应 0000 0001 反转后为 0000 0001

    -1 对应 1000 0001 反转后为 1111 1110 第一位符号位不变

    如果一个数是负数,就将它转化成原码,再反转

    补码

    补码的表示方法是:

    正数的补码就是其本身

    负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)

    还是举个例子

    +1 = [00000001] = [00000001] = [00000001]补 正数不变

    -1 = [10000001] = [11111110] = [11111111]

    对于负数, 补码表示方式也是人脑无法直观看出其数值的. 通常也需要转换成原码,再转化成反码,再加一,计算其数值。

    零的特殊

    发现用反码计算减法, 结果的真值部分是正确的. 而唯一的问题其实就出现在"0"这个特殊的数值上. 虽然人们理解上+0和-0是一样的, 但是0带符号是没有任何意义的. 而且会有[0000 0000]和[1000 0000]两个编码表示0.

    1-1 = 1 + (-1) = [0000 0001] + [1000 0001] = [0000 0001] + [1111 1111] = [0000 0000]=[0000 0000]

    这样 1000 0000就可以用来表示-128.

    只用0000 0000来表示0

    (-1) + (-127) = [1000 0001] + [1111 1111] = [1111 1111] + [1000 0001] = [1000 0000]

    物尽其用嘛

    (7)拓扑排序

          对一个有向无环图G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若u的入度小于v的入度,则u在线性序列中出现在v之前。

    注意:

       1)只有有向无环图才存在拓扑序列

       2)对于一个有向无环图,可能存在多个拓扑序列

     

    对此样例,有两种情况

    1       A B C D

    2       A C B D

    对此样例,不存在拓扑排序,因为他有自环。

    注意:

    拓扑序列中的第一个节点一定是入度为零的点。

    万万要记住

     

     (8)指针

    int *a;

    int b;

    a=&b;

    *取地址中的内容

    &取地址

    死记就行

     

    蒟蒻总是更懂你✿✿ヽ(°▽°)ノ✿
  • 相关阅读:
    Memcache安全配置
    Iptables DDOS/CC 自动屏蔽脚本
    php浮点数精确运算
    Relearning PHP (2) – php 的浮点数float
    mybatis分页插件PageHelper的使用(转)
    深入理解mybatis参数
    @Param注解在mybatis中的使用以及传入参数的几种方式(转)
    idea常用快捷键大全(转)
    @ModelAttribute注解的作用
    参数绑定
  • 原文地址:https://www.cnblogs.com/WWHHTT/p/7662830.html
Copyright © 2011-2022 走看看