C语言学习day16

一.位运算
    1.~:按位取反
        位运算不能操作浮点型数据
    2.&:按位与
        与0得0,与1保持原值
        第6个bit:bit5
        第5个bit:bit4
    3.|:按位或
        或1得1,或0保持原值
    4.^:按位异或
        相同为0,相异为1;
        交换:
            int swap = a;
            a = b;
            b = swap
            
            a = a + b;
            b = a - b;
            a = a - b;
            
            a = a ^ b;
            b = a ^ b;
            a = a ^ b;
    5.<<:左移运算符
        a << n:3;
        高位左移后溢出时,舍弃。
    6.>>:右移运算符
        a >> n:3;
        对于有符号数:
            高位是0,则补0;
            高位是1:
                算术右移:补1
                逻辑右移:补0
        对于无符号数:
            高位直接补0;
            

二.内存管理
    32位操作系统,虚拟内存有4G
    虚拟内存可以细分:内核空间、堆区、系统栈区、数据区、代码段区
        1.内核空间:
            操作系统运行空间
        2.系统栈区:
            函数调用时在栈区开辟栈帧(用于存放数据型代码,即局部变量存放位置)。
            从定义开始开辟空间,到离开作用域回收空间。
            由操作系统自动管理。
        3.堆区:
            由程序员手动管理
                申请:
                    malloc()
                    #include<stdlib.h>
                    void *malloc(size_t size);
                    用以在空间申请一段连续内存空间。
                    size:空间大小。
                    申请成功则返回连续空间的其实地址;失败则返回NULL。
                释放:
                    free()
                    void free(void *ptr)
                    有申请空间的地方,使用结束后,需要释放,否则会引发内存泄漏
                    对malloc返回值需要进行NULL判断,否则可能会引发崩溃
                拓展_内存池:
                    在申请空间时,会依据空间大小,申请额外的空间
                    存在数个不等的区间,在同一区间内,会申请相同的空间;
                                        在不同区间内,会申请不同的空间
        4.数据区:
            未初始化的全局变量、静态变量。//默认初始化为0
            已初始化的全局变量、静态变量。
            文字常量(字符串常量)。//该空间不允许被修改
            编译阶段开辟空间,程序结束回收空间
        5.代码段区:
            存放指令,顺序执行,需要开辟局部变量空间时跳转到系统栈区(用于存放操作型代码)。
    压栈(入栈):函数调用时跳转到被调函数,为被调函数开辟栈帧。
    弹栈(出栈):被调函数执行结束后跳转回主函数,被调栈帧回收的操作。
    CPU中存在pc寄存器,可以在代码段进行顺序执行以及跳转执行操作。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值