博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言拾遗(一)
阅读量:5020 次
发布时间:2019-06-12

本文共 1956 字,大约阅读时间需要 6 分钟。

越来越体会到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

 

转载于:https://www.cnblogs.com/DarrenChan/p/6230817.html

你可能感兴趣的文章
本博客所有技术文章皆转自网络
查看>>
sass最佳实践
查看>>
移动端笔记
查看>>
Behaviac 腾讯开源行为树 简介(给策划)
查看>>
js:鼠标事件
查看>>
bzoj 2005: [Noi2010]能量采集
查看>>
2016级算法第一次练习赛-E.AlvinZH的儿时回忆——蛙声一片
查看>>
2016级算法第三次上机-G.Winter is coming
查看>>
SSAS使用MDX生成脱机的多维数据集CUB文件
查看>>
ACM_hdu1102最小生成树练习
查看>>
MyBatis源码分析(一)--SqlSessionFactory的生成
查看>>
android中ListView点击和里边按钮或ImageView点击不能同时生效问题解决
查看>>
CTF常用工具之汇总
查看>>
java的面向对象 (2013-09-30-163写的日志迁移
查看>>
HDU 2191 【多重背包】
查看>>
51nod 1433 0和5【数论/九余定理】
查看>>
【AHOI2013复仇】从一道题来看DFS及其优化的一般步骤和数组分层问题【转】
查看>>
less 分页显示文件内容
查看>>
如何对数据按某列进行分层处理
查看>>
那些用JavaScript写的操作系统
查看>>