数值的表示方法:原码,反码,补码
数值的二进制形式的最高位决定了数值的正负
1 表示正数 0表示负数
数值1:
原码:0000 0000 0000 0000 0000 0000 0000 0001
反码:0000 0000 0000 0000 0000 0000 0000 0001
补码:0000 0000 0000 0000 0000 0000 0000 0001
正数的原码,反码和补码相同
数值-1:
原码:1000 0000 0000 0000 0000 0000 0000 0001
反码:1111 1111 1111 1111 1111 1111 1111 1110
补码:1111 1111 1111 1111 1111 1111 1111 1111
负数的反码:原码的符号位保持不变,其余各位0->1,1->0
负数的补码:反码+1
广义的计算机都是以数值的补码形式进行存储的,补码的存储方式使数值计算更快
给定一个整数,输出它的补码形式:
1.使用for
#include<stdio.h>
#include<stdlib.h>
void main()
{
int num,i=1;
scanf("%d",&num);
int data=1<<31;
for(i=1;i<=32;i++)
{
printf("%c",(num&data ? '1' : '0'));
num<<=1;
if(!(i%4))
{
printf(" ");
}
}
system("pause");
}
2.使用while:
void main()
{
int num,i=1;
scanf("%d",&num);
int data=1<<31;
while(i<=32)
{
printf("%c",(num&data ? '1' : '0'));
num<<=1;
if(!(i%4))
{
printf(" ");
}
i++;