float类型(32位)
进制转换:float转二进制
**** > 12.5——>1100.1 ****
12——>1100
0.5——>2^-1
举例说明
二进制转十六进制
地址的存放
后置++
先把i取出来后再赋值给j 然后i本身自增1
1.下列代码打印结果为11,10
int i=10;
int j=i++;
printf("%d %d",i,j);
前置++
i先自增1然后再赋值给j
2.下列代码打印结果为11,11
int i=10;
int j=++i;
&&(且)同真则为真
| | (或)有一真则为真
经典例题:
int a=1;
int b=0;
int c=0;
if(a++ && b++ && c++)
{
printf("true\n");
}
else
{
printf("false\n");
}
printf("%d,%d,%d\n",a,b,c);
输出为 false
2,1,0
表达式1 | | 表达式2 表达式1若为真表达式2不计算 此时表达式1 | |表达式2 也一定为真
~按位取反
11 0000 1011
~11 1111 0100
两个数之间 &按位与 |按位或 ^按位异或
11 0000 1011
13 0000 1101
11&13 0000 1001(有一个0则为0)
x&=x-1
x取1 x-1为0 此结果为0 此表达式表达为丢弃最右边的1
11 | 13 0000 1111 (有一个1则为1)
11^ 13 0000 0110(一样的为0 不一样的为1)
<<(按位左移) >>(按位右移)
例题
11<<1(按位左移一位) 000 1011 0
右补0 相当于112^1
11<<2(按位左移两位) 00 1011 00
右补两个0 相当于112^2
11>>1(按位右移1位) 0 0000 101
左移一位左边补符号位 0表示正数 1表示负数
在逻辑运算中若无符号位直接补0
-1补完还是-1
整数的二进制表示有:原码 反码 补码
存储到内存的是补码
反码 符号位不变 其余按位取反~
补码 原码+1