上のほうのsigned char*をunsigned cahr*にキャストする話で疑問に思って

#include <stdio.h>
int main(){

int i=-1;
int *ip = &i;
unsigned int *ip2 = (unsigned int *)ip;

printf("i = %d\n",i);
printf("*ip = %d\n",*ip);
printf("*ip2 = %d\n",*ip2);

if (*ip2 > 0) printf("*ip2 は正です");

return 0;
}

と書いて実行してみたら

i = -1
*ip = -1
*ip2 = -1
*ip2 は正です

となってしまったのですが、*ip2 は正と負、どちらなんでしょうか?