听一位程序猿讲过,写代码有三个境界:看代码是代码,看代码是内存,看代码还是代码。第一个境界入门,第二个境界熟练,第三个境界已经是大牛了。不过,应当还要有一个境界,超脱这个三个境界之外——
看代码是英文字母!
1、数据类型
类型不同决定在内存中开辟空间的大小,以及如何看待内存空间的视角。
2、整型存储
整数在计算机中有三种表示方法,原码,反码,补码。对于整形,在内存中存储的为补码。
正数,原反补三码相同,无变化。
负数,原码保持符号位不变,其余位按位取反,得到反码,反码加1,得到补码。
若想从补码获得原码,可减1,再保持符号位不变按位取反,亦可将这两个过程翻转,因此,实现原码和补码的转化并不需要额外的硬件电路。
同样,补码的运算也可以让加法与减法同时处理,使用同一套电路。
发明补码的科学家真是天才!
3、大小端存储
大端模式:指数据的低位存储在内存的高地址中,而高位存储在内存的低地址中;
小端模式:数据的低位存储在内存的低地址中,而高位存储在内存的高地址中;
而计算机中采用何种方式,通常由其cpu架构确定,并不由操作系统确定。虽然我们不可以改变模式,但是我们却可以用一个简单的程序进行判断,得知系统整形数据的存储模式。
这是因为,1用16进制表示为00 00 00 01,1位于数据的低位,而存储数据又是从低位地址到高位地址存储,由此得以判断。
4、浮点型存储
二进制浮点数,按以下方式表示
(-1)^S*M*2^E
式中,^为次方,(-1)^S为符号位,M为有效数位,2^E为指数位
标准规定,S为1bit,位于数据首位;E为8bit(32位中,64位中为11bit),位于中间;最后为M,23bit(32位中,64位中为52bit)。