把这个单独分出来吧
其实原计划是一个星期把C弄完,没想到今天就是第七天的,才要开始指针.
指针就是地址嘛,也就是要说到内存.所以先说一下:
源码,反码,补码
其实只要记住一句话就可以,计算机内存储的是补码,这个知识点在<<计算机组成原理中>>如果是做行四门功课必看.这特别特别重要.
正数的源码,补码
正数的源码和补码一样
+2 源码:0000 0010 反码:0000 0010 补码:0000 0010
负数的源码,补码
负数从源码到补码,符号位不变取反+1
-2 源码:1000 0010 反码:1111 1101 补码:1111 1110
负数从补码到源码,符号位不变取反+1
-2 补码:1111 1110 取反:1000 0001 加一得到源码:1000 0010
负数从补码到源码,还可以符号位不变-1取反
-2 补码:1111 1110 减一:1111 1101 取反得到源码:1000 0010
第一时间看上去有点懵,思考一下逻辑很简单.取反前-1和取反后加一结果是一样的,其实就是
-1-1=-(1+1)
为什么要用补码
CUP中有一个ALU(算数逻辑单元),有些人喜欢称为加法运算器,实际上它做的工作是加法,移位,逻辑与或非异或.
至于为什么那就是提升运算效率
整数运算大概是这样的(浮点数有单独的单元要复杂很多):
加法:直接加
减法:负数变为补码->直接加
乘法:加法 逻辑 移位
除法:减法 逻辑 移位
其实这么说很不负责,如今复杂的ALU是可以一步执行复杂的运算的.
补码减法
2 - 4:
2