%u : 65525 表示成2进制就是 1111 1111 1111 0101
%d : -1的2进制是 1111 1111 1111 1111
同样你之前的65525用%d,他就是这个结果
负数二进制
网页链接
因为int是有符号的整数,所以要加一个判断正负的符号位,a(2)=01010;取反。就是x=~a(2)=10101;符号位0代表正,1代表负;负数在计算机中是以补码的形式存在,也就是说,一个负数首先要将原码取反变成反码,再加1,变成补码形式。
所以,将10101变为原码要先减1变为反码,等于10100,再将除符号位之外的每一位取反,等于11011,就是-11