A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 八寒地狱 中级黑马   /  2014-10-18 20:25  /  983 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

      1(1)进制的定义 和类型
    进制是一种计数的方式,数值的表达类型。 同一整数至少有四种表达方式: 十进制, 二进制 八进制 十六进制。
(2 )进制的特点
                二进制    特点 只有 0 和 1 ,逢2进1,书写格式以0b或者0b开头,使用场合:二进制指令\二进制文件,变量在内存中就是二进制存储。
              八进制      特点:0~7,逢八进一,书写格式以0开头,
              十六进制   特点:0~F,逢十六进一  0x或者0X开头。
              十进制        特点:整数形式 逢十进一。
            (3)
              进制在printf中的输出形式
            %d\%i  十进制形式输出整数
            %c 输出字符
            %p 输出地址
            %f 输出小数
           %o 八进制形式输出整数
           %x 十六进制形式输出整数
       2    进制的转换问题
            进制转换的3个基本要素:数位、基数和位权
                数位: 数位是指数码在一个数中所处的位置
                 基数:每个数位上所能使用的数码的个数 (二进制取值0、1基数为2,十进制取值0-9基数为10
                  位权:位权是指一个固定值 如367 3*10^2 6*10^1 7*10^0

         (1)十进制转二进制

               67 = 64 + 2 + 1 = 2的6次方 + 2的1次方 + 2的0次方

           = 0b1000000 + 0b10 + 0b1

           = 0b1000011

         (2)2进制--->10进制

      0b1100 = 0 * 2的0次方 + 0 * 2的1次方 + 1 * 2的2次方+ 1 * 2的3次方
        = 0 + 0 + 4 + 8 = 12
      0b1111 = 1 + 2 + 4 + 8 = 15
      0b1010 = 10
          (3)2进制--->8进制

      整数部分 从高位 三位并一位,,小数部分 从左到右三位并一位,合算成数字,从右到左  以此写出

         (4) 8进制--->10进制

         八进制数采用 0~7这八数来表达一个数。 八进制数第0位的权值为8的0次方,第1位权值为8的1次方,第2位权值为8的2次方......

      (5)8进制--->2进制  

      从高位以此一拆为三,依次写出

    (6)2进制--->16进制        
          整数部位从右到左四位并一位,小数部分 从左到右四位并一位。
      一 )原码、反码、补码

       默认数是10进制
        原码


     正数:数转换为2进制,最高位如果是0,则是整数
     负数:数转换为2进制,最高位如果是1,则是负数

      00000001     +1
      10000001     -1


          反码

      正数:整数的反码还是它的原码
      负数:除符号位不变,其它各位,逐位取反

       00000001    +1 反码
       11111110    -1 反码
       + 00000001  
            补码
       补码主要是用于设计计算机的减法
       正数:整数的补码还是它的原码  
       负数:反码+1
    技巧
      已知负数的原码求补码

    1)反码:除符号位之外,取反
    2)补码:反码+1

    -10
    原码:10000000 00000000 00000000 00001010
    反码:11111111 11111111 11111111 11110101
    +1      00000000 00000000 00000000 00000001
   ----------------------------------------------
    补码:11111111 11111111 11111111 11110110

    用补码得到原码:
         10000000 00000000 00000000 00001001
   +1    00000000 00000000 00000000 00000001
------------------------------------------------
         10000000 00000000 00000000 00001010
       例如 -13原码:     10000000 00000000 00000000 00001101
        -13反码:     11111111 11111111 11111111 11110010
         13补码:     11111111 11111111 11111111 11110011
    位运算:


        C语言中的位运算符介绍:
       一个数的二进制机器码之间的运算 是一个双目运算,需要有两个操作数

     1)&  按位与 (比较两个数对应的数码,如果都为1,则结果为1)
                口诀:同1为1

    9&5

       1001
     & 0101
------------
       0001     (1)

    2)|  按位或(比较两个数对应的数码,如果有一个为1,则结果为1)
              口诀:有1为1

       1001
     | 0101
---------------
       1101    (13)

    3)^  按位异或(比较两个数对应的数码,如果两个码相同则为0,不同则结果为1)
              口诀:相同为0,不同为1
       1001
     ^ 0101
--------------
       1100    (12)

    4)~  按位取反(单目运算,数码逐位取反)
              口诀:0变1,1变0
       00000000 00000000 00000000 00001001
     ~
-----------------
       11111111 11111111 11111111 11110110    (-10)

    5)>> 按位右移

       表示所有的二进制位,整体右移n位

       注意:
       1)数值得变化:每向右移动1位相当于除以2,保留整数部分
       2)右移的时候,高位补符号位,低位直接舍弃
       3)向右移动的时候,不会改变一个数的正负性


      000000000 00000000 00000000 00001001
                                       |

    6)<< 按位左移

       表示:所有的二进制位,都向左移动

    00000000000 00000000 00000000 01001000   =72
       |

    11001111 11111111 11111111 11110110
       |

    左移:

    1)左移可以让一个数变大
       左移1次相当于*2  
    2)左移可能会改变一个数的正负性
    3)高位舍弃,低位补0



    技巧:

    1)任何数和1进行按位与(&) 的到这个数的低位

          1001
        & 0001
   -----------
          0001              1

          1000
       &  0001
     -----------
          0000              0
   技巧  任何二进制数与一进行按位与 运算 能判断奇偶性。


变量的存储:

   查看变量的地址使用 %p

   1)内存是由若干个1个字节的存储单元组成
      每个单元都有一个唯一的地址

   2)内存存储数据是从高地址向地地址分配的

      数据有高位和地位

       int a =10;

      00000000 00000000 00000001 00001010
      高                                低

      一个整数的各个字节存放的顺序:地位存放低地址  高位存放高地址

   3)变量在内存中最小的那个地址,是变量的首地址   
  类型说明符

   int 4个字节  %d
   short 2个字节 %d
   long 8个字节  %ld
   long long 8个字节 %lld
      signed和unsigned的区别:
      signed 最高位要当做符号位
      unsigned 最高位不要当做符号位

      signed == signed int
      signed 有符号:正数、0、负数
    char型常量
       占一个字节    存储原理 去除字符的ASCII码值,然后转换成二进制,储存在一个字节中                
      注意事项 当把一个字符赋值给一个char类型变量,那么系统首先查这个字符所对应的ASCII码,然后把
      这个ASCII值放到变量中  ,根据变量中存储的ASCII值,去查ASCII表中对应字符,然后把这个字符打印控制台上,整形和 字符型可          以互相转换。

     技巧  小写字母和对应的大写字母相差32,





0 个回复

您需要登录后才可以回帖 登录 | 加入黑马