目录
二进制
进制分类
进制表示形式
进制转换
原码 反码 补码
数据类型
数据类型转化        
  
5 二进制
  
5.1 进制分类
 
5.2 不同进制表示形式
1 2 3
   | 十进制: 就是十进制(无特殊) 二进制: 0b010101 十六进制: 0x  0X  #0x  #0X
   | 
 
  
5.3 进制之间的转换
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
   | 二进制转十进制     方式:  从低位开始,提取每一位的数据,乘以2的(位数-1)次方, 结果相加        0111 二进制        0   1   1   1        1*2^(1-1)=1        1*2^(2-1)=2        1*2^(3-1)=4        0*2^(3-1)=0        1+2+4+0=7
  十进制转二进制     方式: 使用该数不断的除以2,直到商为零结束, 最后把每一步计算的余数倒叙组合就是二进制               10十进制 转为二进制         10%2=5 余 0         5%2=2 余 1         2%2=1 余 0         1%2=0 余 1         1010
  十六进制转为十进制     方式:  从低位开始,提取每一位的数据,乘以16的(位数-1)次方, 结果相加               #0x12A            (A)10*16^0=10            (2)2* 16^1=32            (1)1*16^2=256           256+32+10=298 十进制转为十六进制          方式: 使用该数不断的除以16,直到商为零结束, 最后把每一步计算的余数倒叙组合就是二进制                33(十进制)              33%16=2 余 1              2%16=0  余 2             十六进制的结果: 21     二进制转为十六进制     方式: 把二进制每4位一组,计算十六进制                 1001  1100           9(十进制)     12(十进制)       十六进制结果:  9C                    十六进制转为二进制        方式:  把每一位转成4位一组的二进制                       9C              (C)12=8+4  二进制表示:  1010             (9) 9=8+1  二进制表示:  1001                二进制结果: 10011010     
   | 
 
  
5.4 原码 反码 补码
1 2 3 4 5 6 7 8 9 10 11 12 13 14
   | 机器数: 就是二进制数据 形式值:没有符号位   1111  最高位不是符号位 真值: 有符号位     1111( 最高位是符号位)
  原码:  真值 反码:     正数的反码就是原码   负数的反码符号位不变其余取反 1111---> 1000 补码:   正数的补码就是原码   负数的补码就是反码+1,符号位不变    总结:1.正数的 原码 反码 补码 一致       2.计算中存储的数据都是以补码形式存在  
   | 
 
  
5.5 数据类型
| 整型 | 
浮点型 | 
布尔类型 | 
| char           1字节 | 
float 4字节 | 
宏定义(自定义布尔类): #define BOOL int | 
| short          2字节 | 
double 8字节 | 
使用c99标准中:Bool | 
| int               4字节 | 
long double 16字节 | 
使用c99标准: 导入头文件
  <stdbool.h> | 
| long           (32:4字节    64:8字节) —> 现在的笔记本是使用了32位系统的转化方式(4字节) | 
 | 
 | 
| long long    8字节 | 
 | 
 | 
 
5.6 数据类型转化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
   | 自动类型转换:  窄类型转为宽类型 1.运算过程中的自动类型转换(隐式转换)    比如: int a=1;short b=2   计算: a+b 结果是int类型
  2.赋值过程中的自动类型转换(隐式转换)    比如: float f=3.14;  自动把double类型转为了float类型
  3.强制类型转化    宽类型转为窄类型    案例:        //计算三个人的平均年龄         int age1=20,age2=23,age3=24;              //printf("%lf",(age1+age2+age3)/3.0);         // 22.333333       printf("%lf",(double)((age1+age2+age3)/3));   // 22.000000       printf("%lf",(double)(age1+age2+age3)/3);     // 22.333333
   |