C语言学习-内存剖析

来源:互联网 发布:淘宝司法拍卖网下载 编辑:程序博客网 时间:2024/06/15 12:29

进制

二进制表示:以0b或0B开头

八进制表示:以0开头

十六进制表示:以0x或0X开头

各进制输出:

%o :八进制输出

%x :十六进制输出

负数与取值范围

负数在计算机中表示时,将最高位作为符号位,1表示负数,0表示正数

n位有符号数值范围-2n-1~2n-1-1

short和long整型

C语言中short和long只作为int数据类型的修饰符(与java中long、short区别)

long int a可以略写为 long a;(short同样适用)

注意:在修饰int类型时,还有一种修饰方式为long long int。此类型的字节数仍为8个,作用在于当编译器为32bit位时,int此时表示2个字节,这时long int表示4个字节,long long int就表示8个字节

signed和unsigned

signed:表示有符号数值。C语言中int类型默认即为有符号数值

unsigned:表示无符号数值

同样可以略写为 signed a;unsigned b

输出格式:

unsigned:u%

signded:d%

注:此两种修饰符可以和longshort修饰符混合使用

位运算

与运算-按位与:&

或运算-按位或:|

异或运算-按位异或:^

取反运算-按位取反:~

位运算法则

1) 与运算:两个位上的数都为1时才为1(全1才1,一0则0)

2) 或运算:两个位上的数有一个为1即为1(全0才0,一1即1)

3) 异或运算:两个位上的数相同时为0,不同时为1

  • 相同数值进行异或结果一定为0
  • 可以交换 如:9^5^6=9^6^5
  • 任何数值跟0进行异或,结果还是原来的数值

4) 取反运算:0变1,1变0

5) 左移和右移

  • 左移(<<):对一个数左移n位等同于该数乘以(*)2的n次方(注:左移时会导致该数符号丢失,低位补0)
    int a=8;a=a<<1;//表示a左移1位,左移后a=16
  • 右移(>>):对一个数右移n位等同于该数除以(/)2的n次方(注:右移时高位以该数符号位补齐)

int a=8;a=a>>1;//表示a右移1位,左移后a=4

  • 左移右移运算的优先级仅低于算术运算的优先级

Char类型使用注意

1) char符号单引号’ ’只能括单字节的字符

2) 当int类型的值在-128~127之间时,可以存储在char类型中(字符的本质为整数,在内存中存储char类型时还是用二进制数存储,只是输出是用格式符控制遵循ACII码输出相应字符)


0 0
原创粉丝点击