A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 布鲁兹老爷 中级黑马   /  2015-10-13 12:37  /  552 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


1、变量在内存中存储的细节
给变量分配内存时,内存寻址由大到小,从大得地址开始分配。
例如:
int number1;
int number2;
内存首先分配4个字节的地址给number1,然后在分配4个字节的地址给number2。
number2的地址比number1得地址小4。
每个变量都有4个字节的空间,地址值最低的那个就是这个变量的地址。数值存储也是从分配空间的低地址开始储存。
2、二进制内存表示如下
例如
int i = 2;
在内存中
0000 0000 0000 0000 0000 0000 0000 0000 0010
最高位为1时是负数,最高位为0时是整数。

3、位运算
1、按位与&
只有对应的两个二进位均为1时,结果才为1,否则为0
9 & 5 的结果是1
计算原理
9                      1001
5                      0101
&                   ---------
结果为                 0001
按位与的作用,可以快速精确的获得某位上得数,直接用1去&它,其他为都用0去&,最后结果很容易就能看到它的值。
2、按位或|
只要有一个是1,结果就是1,否则为0
计算原理
9                      1001
5                      0101
|                   ---------
结果为                 1101
3、按位异或^(在C语言中是按位异或,在OC中是其他含义。)
当对应的二进位相异(不相同)时,结果为1,否则为0
计算原理
9                      1001
5                      0101
^                   ---------
结果为                 1100
一般的使用场合:
规律1、自己异或自己,结果为0。
规律2、9^5^6==5^6^9一样
规律3、任何数值跟0进行异或,结果还是原来的数值。
从上得到
规律4、a^b^a == b
第三种交换变量a和b的方法
a = a ^ b;
b = a^ b;
a = a^ b;
4、按位取反~
把每一位都取反,0变1,1变0
5、左移<<
a<<n
相当于把a的每一个二进位往左移n位,每移一次,最高位消失,最低位用0来补充
例如 0000 0000 0000 1111 进行左移2次
结果 0000 0000 0011 1100
规律:5<<1 结果是10
5<<2 结果是是20
得出 5<<n 结果为5*2的n次方
使用场景:快速计算n*2的j次方 n<<j
6、右移>>
把每一个二进位向右移,最高位(符号位)不变,空出的部位用最高位(符号位)来补全。
例如 8>>2
0000 1000 右移两次之后
结果0000 0010
规律:8>>1 结果是8除以2的1次方
8>>2结果是8除以2的2次方
8>>n结果是8除以2的n次方



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马