美文网首页
嵌入式c语言基础

嵌入式c语言基础

作者: 爱丶Notexplain | 来源:发表于2018-07-21 08:37 被阅读0次

    第一章、

    进制与码制:

    一、常用的几种数制

    1.二进制

    应用领域非常广的一种数制,在二进制数中,每一位数字只能从0和1取,之所以它的基数是2。其中低位与高位之间的运算关系遵守“逢二进一”(左边为高位,右边为低位),故称为二进制。判断一个数是否为二进制数(1.前缀为0b或者b开头,例如(0b1000110,b1000101)为二进制。2.看数值,数字只能是0或1例如(1001101,10101001),都是二进制)

    2.八进制

    作用领域不大广泛,在八进制数中,每一位数字只能从0到8之间取,之所以它的基数是8。其中低位与高位之间的运算关系遵守“逢八进一”,故称为八进制。判断一个数是否为八进制数(1.前缀为O,2.看数值,每一位数都在0到8之间。)

    3.十进制

    应用领域在日常生活中最为广泛与常见,在十进制数中,每一位数字只能从0到9之间取,之所以它的基数是10,其中低位与高位之间的运算关系遵守“逢十进一”,故称为十进制。判断一个数是否为十进制(1.每一位数字是否都在0到9之间。)

    5.十六进制

    十六进制数的每一位有16个不同的数码,分别用0到9,A(10)、B(11)、C(12)、D(13)、E(14)、F(15)表示。并且计数的基数是16,其中低位与高位之间的运算关系遵守“逢十六进一”,故称为十六进制。判断一个数是否为十六进制数(1.带有A、B、C...等字母的。2.下角标为16或者H的同样也是。)

    二、常用进制之间的转换

    1.二进制转十进制:

    注意(任何进制计数,高位都是左边,而右边则为低位,在高位前面补零,那么对于整个数值来说没有变化,但千万不能在低位后面补零。)

    二进制转十进制规则:

    以2为底,从低位向高位每一位进行2幂运算,然后和与之对应的位进行乘再求和。

    例如:

    0         1       0        1          1        0        1          1(一个八位数的二进制)

    2^7    2^6    2^5    2^4     2^3     2^2     2^1     2^0 (以2为底的幂运算)

    0*2^7  1* 2^6  +  0* 2^5  +  1* 2^4  +  1* 2^3  0* 2^2  +  1* 2^1  +  1* 2^0 =91

    十进制转二进制规则:

    对十进制数以2为除数,然后求余的一个过程,(我们这里只讨论整数过程.....)

    例如:把十进制数57化成等价的二进制数。

    57 / 2=  28  .......1

    28 / 2=  14.......0

    14 / 2=  7.......0

    7/ 2=  3.......1

    3 / 2=  1.......1

    1 / 2=  0.......1

    求出来的余数,从下往上取,那么十进制数57化为二进制数,二进制数就等于“111001”

    二进制转八进制规则:

    把二进制从低位向高位进行分化,3位二进制数为一个单位的划分,也就是说3位二进制数等价于1位八进制数。

    例如:

    (二进制数)   010      001      101

                        421      421      421

    (八进制)    2          1           5

    注(当二进制数最高位不够划分为3位时就在前面补零)

    八进制转二进制规则:

    与二进制转八进制同理,我们可以通过逆向思维,那就是1位八进制数对应3为二进制数。

    例如:

    (八进制)        2        1        5

                            421    421    421

     (二进制)     010    001    101       最高位的0可以省略不写。

    二进制转十六进制规则:

    4位二进制数看作一个整体,它的进位输出正好是“逢十六进一”,所以和二转八类型有些相似。也可以用  64 32 16 8 4 2 1  码来做。

    例如:

    (二进制)   0101       1110

                    8421       8421

    (八进制)      5             E

    十六进制转二进制:

    只需要把1为十六进制数转化为4位二进制数即可。

    例如:

    (十六进制)   8          F             A

                          8421     8421      8421

    (二进制)    1000     1111      0011

    注:其他进制相互转化,具体过程自己自行推演。

    三、原码、反码、补码

    原码:

    符号位加上真值得绝对值。

    例如:

    +1(原码)=0000 0001

    -1(原码)=0000 0001

    反码:

    顾名思义,就是反着来。注(正数的原码,反码,补码都是一样的。而负数的反码就是符号位不变,其他位取在原码基础上取反,即1变0,0变1)

    例如:

               原码                        反码

    +1    0000   0001       0000   0001

    -1     1000   0001       1111   1110

    +0     0000  0000        0000   0000

    -0      1000  0000         1111   1111

    补码:

    正数的原码,反码,补码就是其本身。

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

    例如:

           原码                       反码                        补码

    +1 0000 0001            0000 0001         0000 0001

     -1 1000 0001            1111 1110         1111 1111

    +0 0000 0000            0000 0000          0000  0000

    -0 1000 0000              1111 1111          10000  0000

    相关文章

      网友评论

          本文标题:嵌入式c语言基础

          本文链接:https://www.haomeiwen.com/subject/biihpftx.html