c基础 (一)

1.c编译过程

1.源文件.c      gcc -E a.c -o a.i     预处理(1.展开头文件    2.删除注释    3.条件编译     4.宏定义的展开)    ------>>  2.源文件.i

2.源文件.i       gcc -S a.i -o a.s     编译(1.检查语法    2.将c语言转换为汇编语言)    ------>>                                      3.源文件.s

3.源文件.s      gcc -C a.s -o a.o    汇编(将汇编语言转换为二进制机器语言)           ------>>                                       4.二进制.o

4.二进制.o      gcc a.o -o  a.exe    链接(连接不同操作系统下的库文件)                   ------>>                                      5.可执行文件

一步编译: gcc -o  a.exe a.c

2.进制转换

 1. 10进制与其他进制的转换

    10进制 转换为 任何进制 :    转换为N进制   就除以 N  ,取余数  ,将余数倒序排列几位    N 进制数据               (除数取余法)

    N进制 转换为 10进制 :   从第一位开始     数值* N ^ 0   幂数从零开始增大  然后全部相加 结果为 十进制数    (权值相加法)

 2.二进制与其他进制转换

    使用 8 4 2 1 原理:    八进制  (三位一个)       十六进制  (四位一个)       列如  101  010    就是    4+1  = 5   +2   =    7(八进制)

3.十六进制与八进制转换 利用二进制转换

3.原码 , 反码 , 补码

  1.一个有符号的整型数据可以分为两部分一部分是符号位、一部分是数字位

 
  2. signed int a= 1986(有符号标识 signed可以不用写)   unsigned int a= 1986(有符号标识 signed可以不用写)


  3.列如二进制:11111000010                           


  1986原码: 0000 0000 0000 0000 0000 0111 1100 0010             32位
  -1986原码:1000 0000 0000 0000 0000 0111 1100 0010               第一位代表符号位   1为负数


  1986反码: 0000 0000 0000 0000 0000 0111 1100 0010
  -1986反码:1111 1111 1111 1111 1111 1000 0011 1101                   负数反码为整数的反码的      1变0    0变1


 1986补码: 0000 0000 0000 0000 0000 0111 1100 0010
 -1986补码:1111 1111 1111 1111 1111 1000 0011 1110                      负数补码为整数的补码的+1

 1 0000 0000 0000 0000 0000 0000 0000 0000       相加为33位,溢出舍弃一位,所以还是0

溢出:在数据进行操作的时候会导致超出数据类型大小,会向前位进1,多于原始数据类型大小,会被系统自动舍弃 保留从后面开始数据类型大小的位数   

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章