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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1.进制
(1)默认情况下,就是十进制
int number = 1010;

(2)二进制(ob或者oB开头)
int number2 = ob1010;

(3)八进制(0开头)
int number = 014;

(4)十六进制(0x或者0X开头)
int number = 哦、0xc;
十六进制里:a表示10  b表示11  c表示12  d表示13  e表示14  f表示15。

2.输出符号
(1)%d  十进制形式输出整数。
(2)%c  输出字符。
(3)%p  输出地址。
(4)%f  输出小数。
(5)%o  八进制形式输出整数。
(6)%x  十六进制形式输出整数。

3.进制之间转换
(1)二进制转十进制
0b1100 = 0*2的0次方 + 0*2的1次方 +1*2的2次方 +1*2的3次方 = 0 + 0 + 4 + 8 = 12。

(2)十进制转二进制
67 = 64 + 2 + 1 = 2的6次方 +2的1次方 + 2的0次方
= 0b100000 + 0b10 +0b1
= 0b100011
(3)N位二进制的取值范围
2位二进制的取值范围:0~2的2次方-1
2位二进制的取值范围:0~2的3次方-1
2位二进制的取值范围:0~2的n次方-1

4.signed和unsigned的区别
signed 最高位要当做符号位(默认情况下最高位就是符号位)。
unsigned 最高位不要当作符号位, 输出是用%u。

5.按位与 &
例:1001
0101
0001
printf(“%d\n”, 9 & 5);
只有对应的两个二进制位都为1时,结果才为1,否则为0。

6.按位或 |
例:1001
0101
1101
printf(“%d\n”, 9 | 5);
只要对应的两个二进制有一个为1时,结果就为1,否则为0。

7.按位异或 ^
例:1001
0101
1100
printf(“%d\n”, 9 ^ 5);
当对应的二进位相异(不相同)时,结果就为1,否则为0。
注意:
(1)相同的值进行异或,结果肯定是0,比如9^9 = =9
(2)交换 9^5^6 = = 9^6^5
(3)任何数值跟0惊醒异或,结果还是原来的数值,9^0 = = 9
(4)a^b^a = = a^a^b = = 0^b = = b

8.按位取反 ~
~0000  0000  0000  0000  0000  0000  0000  1001
  1111  1111   1111  1111  1111  1111  1111   0110
全部取反 0变成1,1变成0.

printf(“%d\n”, ~9);

9.左移 <<
0000  0000  0000  0000  0000  0000  0000  1001
    000  0000  0000  0000  0000  0000  0000  10010

9<<1  相当于 9*2的1次方  = =  18
9<<2  相当于 9*2的2次方  = =  72
9<<n  相当于 9*2的n次方  

10.右移 >>
0000  0000  0000  0000  0000  0000  0000  1000
00000  0000  0000  0000  0000  0000  0000  100


8>>1  相当于 8/2的1次方  = =  4
8>>2  相当于 8/2的2次方  = =  2
8>>n  相当于 8/2的n次方  
11.数值互换3种方法
(1)借助第三方
  int temp = a ;
      a = b;
      b = temp;
(2)利用差值
a = b - a;
b = b - a;
         a = b + a;
(3)利用换位异或
a = a ^ b;
b = a ^ b;
a = a ^ b;


0 个回复

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