进制、内存分析
二进制:0b1100或0B1100
八进制:014
十六进制:0xc或0XC
&d &i 十进制
%o 八进制
%p 地址
%x 十六进制
一个int,占4个字节,32bit(位) 存储在内存中地址是由大到小。
aeb = a * 10的b次方
二进制0b1100 == 0*2^0+0*2^1+1*2^2+1*2^3;
n位二进制的取值范围:0~~2^n-1
内存是字节为单位,每个字节都有相应的地址;
二进制最高位是0为正数,1为负数;
char 1个字节 -2^7~~2^7-1
int 4个字节 -2^31~~2^31-1
类型说明符
long 8个字节 %ld == long int 例如:lang a = 102123L
long long 8个字节 %lld(32位编译器)
short 2个字节
signed(有符号)
unsigned(无符号)区别是:最高位是否表示符号
long+unsigned
位运算(效率高)
按位与 &
按位或 |
按位异或 ^ :(1)相同数值异或 结果为0 如:9^9==0
(2)位置交换 9^5^6==9^6^5
(3)任何数与0异或,结果还是原来的数 a^b^a==b;
按位取反 ~
左移 << :二进制往左移动n位,高位舍弃,低位补0; 9<<n——>9*2的n次方
右移 >> :二进制除符号位外向右移n位,最高位用符号位补,低位舍弃; 8>>n——>8/2的n次方
用位与&运算符,判断变量的奇偶性
a&1==0 //偶数
a&1==1 //奇数