越来越体会到C语言的重要性,不管是在计算机底层的理解上,还是在算法数据结构上,所以遂决定重新拾起C语言,不定期更新一些知识点。

推荐博客:http://blog.csdn.net/itcastcpp

1.程序编译链接原理
预处理:.c -> .i
gcc -E hello.c -o hello.i

编译:.i / .c -> .s
gcc -S hello.i -o hello.s

汇编:.s -> .o
gcc -c hello.s -o hello.o

链接:.o -> 可执行程序app
gcc hello.o -o app

2.两种存储法:

小端存储法——高地址存高字节,低地址存低字节(高存高,低存低)(我们平时用的pad和手机笔记本 )
(intel/ARM)
0x表示十六进制

数值:0x12 34 56 78在小端存储器里如何存储

0x8003 0x12
0x8002 0x34
0x8001 0x56
0x8000 0x78

1 BYTE = 8bit

大端存储法——高地址存低字节,低地址存高字节(高存低,低存高)
(IBM大型机/网络字节序)
数值:0x12 34 56 78在小端存储器里如何存储

0x8003 0x78
0x8002 0x56
0x8001 0x34
0x8000 0x12

3.进制转换
10进制: 0,1,2,3,4,5,6,7,8,9,10
2进制: 0,1
8进制: 0,1,2,3,4,5,6,7
16进制:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

八进制开头:0
十六进制开头:0x
十进制开头:什么都不跟

十进制:89 对应的二进制 1011001
89 .... 1
44 .... 0
22 .... 0
11 .... 1
5 .... 1
2 .... 0
1 .... 1

1011001
1+0+0+8+16+0+64 = 89

bit位

8bit = 1BYTE =》每个字节拥有一个地址

0x8003
0x8002
0x8001
0x8000

1 和 -1

原码 反码 补码

1 0000 0001 0000 0001 0000 0001 正数的反码,补码都等于原码
-1 1000 0001 1111 1110 1111 1111 负数的补码等于把反码加1

0 0000 0000 0000 0000 0000 0000
-0 1000 0000 1111 1111 0000 0000

如果(0 等于 -0)
执行aaaa;
否则
执行bbbb;

97 =》 97 ... 1 => 0110 0001
48 ... 0
24 ... 0
12 .... 0
6 ... 0
3 ... 1
1 ... 1
原码 反码 补码
-31 => => 31 => 31 ... 1 => 0001 1111 => 1001 1111 => 1110 0000 => 1110 0001
15 ... 1
7 ... 1
3 ... 1
1 ... 1

char b = 1; => (-128~127)
unsigned char a = 129; => (0~255)
s
0000 0000
1000 0001
1111 1111
int
unsigned int -> (0~2^32-1)

char b = 'x';
int c = 10;

'x' => 120 => 0111 1000
10 => 1010
.
.
.
0x8003
0x8002
0x8001
&b => 0x8000 1BYTE 0111 1000
.
.
.
0x7003 0000 0000 => 0x00
0x7002 0000 0000 => 0x00
0x7001 0000 0000 => 0x00
&c => 0x7000 0000 1010 => 0x0A
printf("&c = %p\tc = %d", &c, c);

'x' => 120
'\a'
'"'
345

"hello" => 'h' 'e' 'l' 'l' 'o' '\0'

'a' == "a"
"a" = "c";

"123" => 123

'1' '2' '3' '\0'

'1' - '0' = 1
1*10 + '2'-'0' = 12
12*10 + '3'-'0' = 123

int a = 5;
a % 3 => 2
a / 2 => 2

float a = 5.0
a % 3 => ???报错
a / 2 => 2.5

C语言拾遗(一)的更多相关文章

  1. C语言拾遗——strtok

    C语言拾遗——strtok 今天刷PAT的时候用到了这个strtok函数,顺手就记录一下 strtok函数包含于头文件string.h 语法:char *strtok( char *str1, con ...

  2. C语言拾遗

    1. 没C++那么恶心的const C语言中的const修饰符用于修饰一个变量是const属性的.被C语言的const修饰的变量具有只读属性,并且不能被修改. const修饰的变量 != 常量,con ...

  3. C语言拾遗--static

    C程序一直由下列部分组成: 正文段——CPU执行的机器指令部分:一个程序只有一个副本:只读,防止程序由于意外事故而修改自身指令: 初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里. ...

  4. C语言拾遗——inttypes.h

    今天偶然间看到这个头文件inttypes,好奇有什么用,去找度娘玩了一波,发现这头文件挺有意思的. 这个头文件适配于C99标准,它提供整数输入的各种进制转换的宏,这是在Ubuntu上扣下来的代码(wi ...

  5. C语言拾遗——sscanf

    今天写题用到了sscanf,怕忘赶紧记录一下 去百度了一下这玩意的函数原型好像是长这样的,微软上扣下来的  int sscanf( const char *buffer, const char *fo ...

  6. c语言,数据类型转换

    在执行算术运算时,计算机比C语言的限制更多.为了让计算机执行算术运算,通常要求操作数有相同的大小(即位的数量相同),并且要求存储的方式也相同.计算机可能可以直接将两个16位整数相加,但是不能直接将16 ...

  7. Go语言核心36讲(导读)--学习笔记

    目录 开篇词 | 跟着学,你也能成为Go语言高手 导读 | 写给0基础入门的Go语言学习者 导读 | 学习专栏的正确姿势 开篇词 | 跟着学,你也能成为Go语言高手 Go 语言是由 Google 出品 ...

  8. iOS-C基础

    iOS开发系列--C语言之基础知识 概览 当前移动开发的趋势已经势不可挡,这个系列希望浅谈一下个人对IOS开发的一些见解,这个IOS系列计划从几个角度去说IOS开发: C语言 OC基础 IOS开发(i ...

  9. 自学导航页(待续ing)

    1 博客导航1.1 linuxlinux全线教程–提供了linux教程,服务器管理教程,BSD教程,还有编程语言(C/Java/Python/Perl),以及网络等全栈学习教程 1.2 存储技术NoS ...

随机推荐

  1. Java 内部类的阐述

    创建一个Computer抽象类:用来在Test类中创建匿名抽象类 package com.zhiyou; public abstract class Computer { int a = 1; /** ...

  2. iOS 直播-获取音频(视频)数据

    iOS 直播-获取音频(视频)数据 // // ViewController.m // capture-test // // Created by caoxu on 16/6/3. // Copyri ...

  3. CocoaPods 导入第三方库头文件自动补齐

    使用了一段时间CocoaPods来管理Objective-c的类库,方便了不少.但是有一个小问题,当我在xcode输入import关键字的时候,没有自动联想补齐代码的功能,需要手工敲全了文件名,难以适 ...

  4. LinkedList 浅析示例

    package com.smbea.demo; import java.util.Iterator; import java.util.LinkedList; import java.util.Lis ...

  5. Html--表单练习

          <!--文档定义一定要带上,因为浏览器在解析的时候先按照文档定义的格式解析,   如果没有就按照浏览器默认的格式解析,可能会出问题.-->   <html>   & ...

  6. Java 流(Stream)、文件(File)和IO

    Java.io包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io包中的流支持很多种格式,比如:基本类型.对象.本地化字符集等等. 一个流可以理解为一个数据的序 ...

  7. Redis学习笔记2-Redis的安装体验

    Redis的官方只提供了Linux版本的,并没提供Windows版本的(不过非官方有windows版本的.可以下载下来做开发测试学习用非常方便.博客后面会介绍到的).Linux下安装过程如下[以下命令 ...

  8. ffmpeg编译常规大全

    其中有需要CMake的,可以直接sudo apt-get install cmake   编译yasm wget http://www.tortall.net/projects/yasm/releas ...

  9. 【小白的CFD之旅】13 敲门实例【续3】

    接上文[小白的CFD之旅]12 敲门实例[续2] 4 Results4.1 计算监测图形4.2 Graphics4.2.1 壁面温度分布4.2.2 创建截面4.2.3 显示截面物理量4.2.4 Pat ...

  10. zookeeper原理

    Zookeeper与paxos算法:http://www.riaos.com/ria/11299 Paxos算法1:http://blog.csdn.net/chen77716/article/det ...