C语言问题 请问为何d输入65525 输出为何是-11?

Python013

C语言问题 请问为何d输入65525 输出为何是-11?,第1张

%u : 65525 表示成2进制就是 ‭1111 1111 1111 0101‬

%d : 2进制 第一位是符号位1 为负数

%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