2.4便于计算机处理的"补数"
二进制表示负数要用"二进制的补数"
补数的作用:用整数表示负数
如何获得补数:
以1为例,-1是1取反+1(1111表示-1,在我知道它是有符号的前提之下,我怎么知道它是-1?-1再取反?通过后面的文章了解确实是这样,-1取反和取反+1都可以做到变成绝对值的效果)
为什么不是符号位取反呢?用1和-1的二进制加法就可以了解补码的合理性了
3-5,是3 + (5的补码(负数))
对于有符号,如占一个字节的bit,它表示的数值范围是-128~127,看似是负数多一个,其实0也被归为正数,所以负数范围在-128~-1,正数的范围在0~127
3.计算机进行小数运算时出错的原因
2进制转16进制:2进制4位表示一位16进制:1010 1100.0101 0011 = AC.53
3.3 计算机出错的原因
不论是多少进制的数值,最终都会以二进制的形式表示,但是有可能其他进制能表示的数值二进制不能表示,这就会造成精度损失
以二进制小数点后四位能表示的十进制为例:
可以看到,没有一个可以表示十进制0.1的
以下是double 0.1加100次的结果,结果并不是10.0
3.4什么是浮点数
浮点数是指用符号、尾数、基数和指数这四部分来表示的小数
3.5 正则表达式和EXCESS系统
十进制数的浮点数应该遵循“小数点前面是0,小数点后面第1位不能是0”
二进制:将小数点前面的值固定为1的正则表达式
Excel系统表现:
3.7如何避免计算机计算出错
0.1相加100次,计算机会得到近似值,但是使用(0.1 * 10)加100次然后再除以10,最后得到的就是准确值了
4.1内存的物理机制很简单
内存是由多个内存IC的电子元件组成
写入与读出:
4.2内存的逻辑模型是楼房
4.3简单的指针
C语言中,指针存的是地址,而对应的数据类型说明该指针可以存储多少字节的数据,如Char * d,如果d指向地址100,根据Char的大小1字节,那么该指针最多从100的地址取到做多1字节的数据
4.4 数组是高效使用内存的基础
数组是使用内存的基础