内存及数据存储

内存及数据存储

程序运行在内存中

抽象:

一个开关 两种状态 开启和关闭  对应1和0
把8个开关放到一个房间里,这个房间成为“一个字节”
一个开关代表“一位”
每个房间都有门牌号 看做“地址”
把无数个房间堆叠起来组成摩天大厦,可以把摩天大厦看成“内存”

单位

1 bit
8 bit  == 1 字节
1024 字节 == 1KB
1024 KB == 1MB

内存中已二进制形式存储数据

二进制 逢2进1
八进制 逢8进1
十六进制 逢16进1

内存地址用16进制表示

进制转化

一、十进制 转 二进制
倒除法,余数逆序

二、二进制 转 十进制
当前的数字 乘以2的位数次方  最后相加

三、八进制 转 二进制
一转三位: 八进制的一位相当于二进制的三位 转化时按照十进制转换

四、十六进制 转 二进制
一转四位: 十六进制的一位相当于二进制的四位 转化时按照十进制转换

五、 二进制 转 八进制
三位一取: 从低位开始取  高位不够补0  转化时按照十进制转换

六、 二进制 转 十六进制
四位一取: 从低位开始取  高位不够补0  

数据存储

计算机存储数据 先开辟内存空间 在存储数据
计算机开辟内存的最小单位是字节
在存储数据时 用最高位表示符号 1表示负数 0表示正数

原码 反码 补码

原码: 规定了字节数 写明了符号位 就得到数据的原码
反码: 正数的反码是其原码  负数的反码是其原码的符号位不动,其他位取反
补码: 正数的补码是其原码  求负整数的补码,将其对应正数二进制表示所有位(除符号位)取反(0变1,1变0,符号位为1不变)后加1

补码转原码的规则:
正数的补码就是原码
负数的补码除最高位符号位不变外,其他位取反后加1。(最高位符号位始终为1,保持不变)

计算机运算时使用补码,读取数时使用原码

位运算

位运算符:按位运算符是把数字看做二进制数来进行计算
与: 两位同时为“1”,结果才为“1”,否则为0
或: 参加运算的两个对象只要有一个为1,其值为1。
异或:参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。
取反:对一个二进制数按位取反,即将0变1,1变0 (包括最高位符号位)
左移:将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0,负数的最高位符号位仍为1)。
右移:将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。(负数最高位符号位仍为1)

栈区

系统自动分配
程序结束自动释放内存空间

堆区

程序员手动开辟 手动释放

浅拷贝

又称为引用拷贝  地址拷贝

深拷贝

又称为内存的拷贝,生成一个新的地址空间

推荐阅读更多精彩内容