输入~5128无法输出结果该如何解决

#include
int main()
{
int num1,num2,num3;
char op;
while(scanf("%d%c%d",&num1,&op,&num2)!=EOF){
switch(op){
case'~':
printf("=%d\n",~num1);
continue;
case'|':
printf("=%d\n",num1|num2);
continue;
case'^':
printf("=%d\n",num1^num2);
continue;
case'&':
printf("=%d\n",num1&num2);
continue;

}return 0;
}

return 0;   

}

%d%c%d这个需要数字符号数字,不能识别符号数字。