二进制转换为十进制
假如一个有一个二进制数0110 0100,转化为十进制为:
第0位 0 x 2^0 = 0
第1位 0 x 2^1 = 0
第2位 1 x 2^2 = 4
第3位 0 x 2^3 = 0
第4位 0 x 2^4 = 0
第5位 1 x 2^5 = 32
第6位 1 x 2^6 = 64
第7位 0 x 2^7 = 0
结果为4+32+64=100
二进制运算
按位与(&)
两位全为1,结果才为1:0&0=0; 0&1=0; 1&0=0; 1&1=1;
按位或(|)
只要有一个为1,结果就为1: 0|0=0; 0|1=1; 1|0=1; 1|1=1;
异或运算(^)
两个相应位为“异”(值不同),则该位结果为1,否则为0:
0^0=0; 0^1=1; 1^0=1; 1^1=0;
取反运算(~)
对于一个二进制数按位取反,即将0变1,1变0: ~1=0; ~0=1;
左移运算(<<)
将一个运算对象的各二进制位全部左移若干位(左边的二进制丢弃,右边补零)
2<<1 = 4 : 10 <<1 =100=4
若左移时舍弃的高位不包括1,则每左移一位,相当于该数乘以2。
右移运算(>>)
将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。操作数每右移一位,相当于该数除以2.
左补0 or 补1 得看被移数是正还是负。
例:1=4 >> 2