代码:
#include <stido.h>
int main()
{
int a=0; int b= ~a;(~按(2进制)位取反)
printf("%d",b)//输出的是-1
}
原码 反码和补码(原码取反-->反码加1-->补码)
原码0:0000000000000000000000000000
反码:11111111111111111111111111111111
求原码(先-1,保持符号位不变,取反)
先减1:11111111111111111111111111111110
符号位不变取反:1000000000000000000000000001
所以结果输出的是-1
只要是整数在内存中储存的是二进制的补码
打印的是这个数的原码
负数取反码的话,首先符号位不变其他位按位取反
~运算符
负数在计算机中以补码形式存储,输出时要转化成原码输出
常见关键字
auto:局部变量,自动变量(通常省略)等等。。。
存储数据
寄存器:访问速度最快,容量最小(register)用于存储被频繁使用的对象
高速缓存:比内存速度还要快
内存:访 问速度快,造价高,容量小
硬盘:访问速度慢,空间大
计算机计算过程:从内存中拿取数据,给中央处理器CPU处理
static
修饰局部变量,使局部变量的声明周期变长
修饰全局变量,改变了变量的作用域,让静态的全局变量只能在自己所在的源文件内部使用
修饰函数,改变了函数的链接属性
指针在32位平台占4个字节,在64位占8个字节