#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
void main()
{
int num;
scanf("%d",&num);
printf("num = %d, num = %p\n",num,&num);
int data = (1 << 31);
if( num<0 )
{
num = ~num+1; //获取原码
num = num | data; //设置符号位
}
for(int i=1; i<=32; i++)
{
int temp = num&data;
if(temp == 0)
{
printf("0");
}
else
{
printf("1");
}
num <<= 1;
if((i%4)==0)
{
printf(" ");
}
}
system("pause");
//return 1;
}
假设为8位,实际上为32位;
num = 10的2进制为 0000 1010; ~num = 1111 0101; ~num+1 = 1111 0110 =-10;
-10的2进制为 1111 0110; ~num = 0000 1001; ~num +1 = 10;
最高位为符号位 1111 0110 = 1000 0000 - 0111 0110 = 0000 1001 = 10;不考虑符号的情况下,10 与~10的关系