1 << 31 为什么是最小整形呢
- 2147483648
- int 一般在目前的编译中是32位的,
- 1<<31 得到的二进制是 10000000 00000000 00000000 00000000,
- 1表示负数,但是后面都是0之后,不是-0吗?
- 其实不然,
- 0没有没有正负, 0在计算机中用00000000 00000000 00000000 00000000 来表示,
- 10000000 00000000 00000000 00000000有表示什么呢,从上面的结果可以很显然的看到,
- 用来表示int的最小整数 - 2147483648 。
这是补码把
补码怎么转化成原码?
- 减1求反啊!!
- 求反加1也行啊!
- 源码怎么变补码
- 取反加1!!
#include <stdio.h>
void main()
{
int a = -123;
int i = 32;
int b = a &(1 << (i - 1));
printf("%d\n", 1<<31);
}
求int数的第i比特位
#include <stdio.h>
void main()
{
int a = -123;
int i = 32;
int b =(a>>i-1)&1;//加减比左右移动优先级别高啊
printf("%d\n", b);
}