内存及数据存储
程序运行在内存中
抽象:
一个开关 两种状态 开启和关闭 对应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)
栈区
系统自动分配
程序结束自动释放内存空间
堆区
程序员手动开辟 手动释放
浅拷贝
又称为引用拷贝 地址拷贝
深拷贝
又称为内存的拷贝,生成一个新的地址空间