二进制数的输出(入门)

想知道为什么b的结果是-1,不依靠电脑,该如何在纸上推算出来呢
(在下C语言入门,还请多多指教)


#include
int main(void){
   int  a,b;
   a = 0b01111111111111111111111111111111;
   b = 0b11111111111111111111111111111111;
   printf("%d %d\n",a,b);

   return 0;
}

这是我自己写的文章,认真看一遍!你就会了,实在不会私信我!:

原码、反码和补码 | C++知识精讲13【看了少走10年弯路】_Yu·仙笙的博客-CSDN博客_c++原码反码补码转换 C++知识精讲的第14篇,原码、反码和补码,此专栏会讲许多,各种各样的类型,如果喜欢此专栏请订阅持续关注,感谢大家的支持。内容包括First·机器数和真值(学习原码、反码、补码必学知识点)、Second·数的原码、反码和补码表示以及之间的互相转换、Third·历年CSP相关知识点课堂练习题(附带答案及解析),历年CSP相关知识点课堂练习题(附带答案及解析)里面含有单选题,多选题还有课外拓展编程题c++希望大家前来观看,此篇为作者的得意之作,第二部分包括作者自己独一档的理解和表格,原码反码补码的转换方法口诀 https://blog.csdn.net/djfihhfs/article/details/126874311?spm=1001.2014.3001.5502

因为b全是1是个补码,那么它本身的绝对值就是将所有位取反后加1,取反就全是0,加1后就是1,然后本身b是负数,所以b实际值就是-1