Chinaunix首页 | 论坛 | 博客
  • 博客访问: 219694
  • 博文数量: 39
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 584
  • 用 户 组: 普通用户
  • 注册时间: 2015-04-18 20:24
个人简介

学习总结,分享快乐。 望指正错误, 共同提高!!!

文章分类

全部博文(39)

分类: C/C++

2015-04-24 21:10:32


1> 数据类型:

C数据类型

32位机

64位机

_Bool (-std=c99)

1

1

char

1

1

short

2

2

int

4

4

long

4

8

long long

8

8

指针变量

4

8

float

4

8

double

8

8

long double

12

16


NOTE:

1 程序中的立即数,编译器会根据他的大小从int开始分配类型。

2 11L: 本来编译器会给他分配一个int类型, 加后缀强制用long类型来存储,LL ULL一样

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

2> unsigned signed数据编码:

1unsigned

egunsigned int u = 0x11223344

地址

大端

小端

0x03

0x44

0x11

0x02

0x33

0x22

0x01

0x22

0x33

0x00

0x11

0x44

大端:最高有效字节在低地址。

小段:最低有效字节在低地址。 (以后都用小端表示)

双端: ARM-V7 支持双端。^_^

note: 想声明一个无符号常量应后缀 U

2signed: 用补码表示。

正数补码 = 本身

负数补码 = 原码 + 1

int i = -1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

16进制:0xffffffff //看到 -1 你要知道是这个 ^_^


xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


3> signed unsigned之间的转换:(只是表示变了,计算机内位存储不会变的)

1signed → unsigned

signed char s = -1

S >= 0

S

S < 0

s + 2 ^ W (w: 变量类型的位数)|

2 ^8 -1 = 255, 0xff



2unsigned → signed

unsigned char u = 255

signed char s = u;

u >= 2^(w-1)

u - 2^w

u < 2^(w-1)

u

2^( 8-1 ) = 128, u = 255-256 = -1

NOTE :

1>公式解释:unsigned → signed,主要看最高位的符号位,也就是与2^(w-1)比较。

2> 隐式转换:singned unsigne 运算:signed → unsigned

Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


4> 溢出问题:

算数运算溢出:指完整的整数结果不能放到数据类型的字长限制中去。

1》无符号溢出

unsigned char c = 5

unsigned char d = 255

unsigne char e = a + d

X + y < 2^w

X + y

2^w <= X + y < 2^(w+1)

x+y -2^w


e = 255 + 5 -256 = 4

2》有符号溢出

2^(w-1) <= x+y

x+y-2^w 正溢

-2^(w-1) <= x+y < 2^(w-1)

x+y 正常

x+y < -2^(w-1)

x+y+2^w 负溢


Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

5> 位运算(都要按位)

OR

AND

NOT

EXCLUSIVE-OR

|

&

^


异或运算:首先2个位值不同(异), 然后(或) 运算那结果肯定是1

NOT :中文是: 取反

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx



6> 逻辑运算(结果只有10

逻辑或运算

逻辑与运算

逻辑非运算

||

&&


Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


7> 移位运算

操作

参数 x

[0111 1111]

[1111 1111]

X << 4

[1111 0000]

[1111 0000]

X >> 4(逻辑右移)

[0000 0111]

[0000 1111]

X >> 4(算术右移)

[0000 1111]

[1111 1111]


Note:

1unsigne 整数类型数据【>>】必须采用【逻辑】右移。

2》算术右移:右移K位在最左端补K位最高有效位。

3signed整数类型大多采用 算术右移。

Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx



阅读(1851) | 评论(0) | 转发(0) |
0

上一篇:Hello,World!

下一篇:Lsxuan博客风格

给主人留下些什么吧!~~