1 << 31 为什么是最小整形呢+求int数的第i比特位

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);
}

优先级大全

猜你喜欢

转载自blog.csdn.net/zhoutianzi12/article/details/107586799
31
31)
今日推荐