~和^运算符的计算方法

请问
{unsigned char a,b;
a=7|3;
b=~ 4&3;
printf("%d %d\n", a, b);
}
中~和^是如何计算的,请详细

这些都是二制位运算,把数先转成二进制,然后运算

~是二进制按位取反,
^是二进制按位异或(相异为1)
|是二进制按位或
&是二进制按位与