C语言基础之十进制与二进制转换

一、二进制 八进制 十进制 十六进制

  1. 二进制:逢二进一           数字只包含  0 1                                                  例:1001
  2. 八进制:逢八进一           数字包含      0 1 2 3 4 5 6 7                                例:0754   (0开头)
  3. 十进制:逢十进一           数字包含      0 1 2 3 4 5 6 7 8 9                          例:1243
  4. 十六进制:逢十六进一    数字包含      0 1 2 3 4 5 6 7 8 9 A B C D E F     例:0x1A2B(0x开头)

二、进制间的转换

        1)位与权   例 :  93  =  9   *   10   +   3   *   1

                                               位       权        位      权

              整数93在一个字节中的二进制形式: 0     1     0     1     1     1     0     1    ---  位

                                                                        128  64   32   16    8    4     2     1    ---  权

         2)零和整数:

               A)二进制转十进制:一位加权,零位不见(凡是1的位就把权加上,凡是0的位就当看不见)

                     01011101 = 64 + 16 + 8 + 4 + 1 = 93             01101101 = 1 + 4 + 8 + 32 + 64 = 109

               B)十进制转二进制:有权添一,无权补0

                     93 - 64 = 29 -16 = 13 - 8 =  5 - 4 = 1  ==》 01011101

                     109 - 64 = 45 - 32 = 13 - 8 = 5 - 4 = 1  ==》 01101101

         3)负数: 符号位为1

              A)二进制转十进制:取反加1,转十添负      或者    减1取反,转十添负

                      10100011--取反-->01011100--加1-->01011101--转换十进制-->93--添负--> -93

                      10010011--取反-->01101100--加1-->01101101--转成十进制 -->109--添负--> -109

              B)十进制转二进制:去负转二,取反加1

                       -93--去负-->93--转二-->01011101--取反-->10100010--加1-->10100011

                       -109--去负-->109--转二-->01101101--取反-->10010010--加1-->1001001

 

你可能感兴趣的:(C/C++)