C语言基础内存区,原码反码补码

C内存:
    栈:局部变量、函数形参 由编译器管理(函数结束,内存释放)
    堆: malloc 开辟空间 free 释放空间 由程序员管理
    全局区/静态存储区: 全局变量和静态变量   编译器管理: 程序结束,内存释放
    常量区:存储常量  编译器管理
    代码区:存放编写的代码  编译器管理


一般全局静态区和常量区都是放在一起的

----------

bit 比特
byte 字节 = 8bit
word = 4 byte

---------

计算机里面的计算都是用反码来计算的
原码
最高位作为符号位 (0代表正 1代表负)
7    0000 0111        -7    1000 0111
127    0111 1111        -127    1111 1111
反码
如果为正 与原码相同 。 如果为负 ,符号位为1,其他与原码相反
7    0000 0111        -7    1111 1000
补码
正数 原码 反码 补码 都一样
负数: 反码 +1
7    0000 0111        -7    1111 1001
使用反码求原数据,如上面 -7 除符号位其他各位求反  1000 0110 再加1 就得到了原数据

计算机内正负数都是用补码来计算的

如上图我输出的是十六进制的-10,实际上输出的是-10的反码
-10 原码 1000  0000 0000 0000 0000 0000 0000 0000 1010
      反码  1111 1111 1111 1111 1111 1111 1111 1111 0101
      补码  1111 1111 1111 1111 1111 1111 1111 1111 0110
                 f        f        f         f      f        f        f        f        6
如果是+10的话 就是正常输出  10的16进制为 a



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值