【C语言疯狂讲义】(七)C语言进制转换

 1、计算机中的进制

 

    2进制:逢二进1      0  1

    8进制:逢八进1      0  1   2  3  4  5  6  7

    10进制:逢十进 默认的进制  0 - 9

    16进制:逢十六进1   0 - 9  A B C D E F      (内存的地址格式)

 

 

 2、进制的转换问题

 

    三个要素:

 

        数位(0-7)、

        基数(每一位能取值的个数)、

        位权(数码*基数^数位)、    101 = 1*2^0+0*2^1+1*2^2

        数码(每一位设置)

 

    转换:有得时候转换为人能识别的数制,要操作计算机写计算机能够识别的语言(二进制)

    10 -> 2  :  2取余法,把10进制数除以2,然后取得余数的序列,再倒序

    2  -> 10 :  所有位的位权相加 101 = 1*2^0+0*2^1+1*2^2

 

    2 --> 16 :  41法, 整数部分从右向左 4位结合成一位,小数部分从左向右4位结合1位,不足部分补0

    16 -->2  :  14法, 16进制的1位拆成二进制的4

 

    2 --> 8  : 31

    8 --> 2  : 13

 

  

    8 --> 10 : 8--> 2 --> 10

    16 --> 10: 16 -->2 -->10

 

 3、原码、反码和补码

 

    1)机器码、真值

      一个数的二进制的表示  机器码

      把一个数的二进制转换为10进值得值  真值

 

    2)计算数据的存储

   

      存储的时数的补码

      数是有正负性

      正数:最高位 0表示符号位 

      负数:最高位 1表示符号位

 

    3)原码、反码、补码:

   

       正数:就是其二进制表示         +1 00000001

       负数:二进制的最高位是1        -1 10000001

 

       反码:

 

       正数:就是其二进制表示         +1 00000001

       负数:符号位不变,其他位逐位取反 -1 11111110

 

       补码:

       正数:就是其二进制表示         +1 00000001

       负数:反码+1                 -1 11111111 

 

       注意:补码的真值不等于原码的真值的

 

 

 4、为什么要使用补码?

 

      主要是位了优化计算机中的减法

 

 5、补码的深入讲解

 

      1-1   =  1+(-1)

 

 6、位运算符

 

      二进制数码之间的运算

 

      6个符号

 

      & 按位与:逐位运算,有0则为0,同1则为1

      | 按位或:有11

      ^ 按位异或:相同为0,不同为1

      ~ 按位的取反:0110

      >> 按位右移:把一个数的所有的二进制位全部向右移动指定位数 10>>2;

                 注意:移出的位舍弃,高位补符号位,可能让一个数为0

      << 按位左移

 

                 把一个数的所有的二进制位全部向左移动指定位数

                 注意:移出的位舍弃,低位补0,可能会改变一个数的正负性

 

      11&2

 

      1011

   &  0010

 --------------

      0010   

 

      技巧:

 

       任何数和1按位&操作,得到这个数的最低位

       偶数的最低位 0

       奇数的最低位 1

 

 

 7、变量在内存中存储的细节

 

       内存分配给变量的存储空间是从高到低

 

       一个变量低位低地址

       高位存放高地址

 

 8char类型

 

       char 

       char常量  ‘a‘,‘b‘,

           int型进行存储,占4个字节

       char变量

           以单个字节存储

           取出ascii  转换为2进制   放到一个字节

 

       %c 取出一个字符

       %d 取出整数值

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。