只说最精华的:
1. 整数在内存中是以补码得形式存储的 (补充说明一下:为什么补码? 计算机只有0和1,-5这个数怎么存,计算机中可没有“-”,需要用0和1来表示符号)
2. 计算机中的加、减法运算本质上都是二进制的加法
3. 有符号型和无符号型变量的区别在于二进制首位是否作为符号位:有符号型,首位最为符号位,0表示正,1表示负; 无符号型,首位和其他位一样作为数字位。
4. C语言中,变量赋值时存在“位截取”,如char c = 0xffff1234; 在赋值时,是截取最后8bit二进制数,即 c= 0x34
下面贴一段代码,验证一下,就全明白了:
unsigned char tt1 = 0xff; unsigned char tt2 = 5; unsigned char sum = tt1+tt2; printf("\n%d\t%x\n%d\t%x\n", sum, sum, tt1+tt2, tt1+tt2);
结果显示:
4 4
260 104
总结一句话:
计算机的世界,一切都是0和1;永远只有加法,没有减法!