【编程范式】斯坦福公开课-学习笔记1
2015-11-21 21:24
351 查看
1.为什么在内存中用补码表示负数--为了硬件可以用统一的计算方式表达加减法
简单的正数二进制加法1+5 = 6如果表示负数时,只是单独的拿最高位做符号位 则short型的-7 + 7表示为:
看上式,-7+7结果却得到了-14,而不是0
但是如果-7用反码来表示,就不会有问题:
最高位的1出界了,所以得到的就是0了。
2.short型的取值范围
用补码表示时,正数的补码是自己,负数的补码是绝对值取反加一。如果只用2byte表示数字,比如short,那么 +0和 -0的都是用 00000000 00000000来表示,那么10000000 00000000 这个表示就没有用了,因为只有10000000 00000000取反加一 = 10000000 00000000, 但是10000000 00000000本身是个负数,因为最高的符号位是1,所以把10000000 00000000人工规定为 -215,故short的取值范围是 -215 ~ 215 - 13. 短字节负数向长字节拷贝时符号位如何处理 ---- 符号位扩展
short s = -1; int i = s;
4. float在内存中的表示
上面的图例表达的数字是,设符号位为s:
(-1)s*1.xxxxx*2(exp-127)
即如果我们要表示 7.0 = 3.5 * 2(129 - 127) = 1.75 * 2(130 - 127)只要指数位增加一点,后面的小数位就可以乘除2,所以这样表示可以表示范围很大的数字,从2-127~2128(这里只说了正数,表明精度范围大)
5.如果将float用short形式解读会是怎样的
float f = 7.0; short s = *(short *)&f;
如图,上述代码的结果是short只会读取float中高2位字节的内容
相关文章推荐
- PHP多进程处理并行处理任务实例
- C++中的lambda表达式详解
- Java基础一
- Java集合综述
- 学习笔记2:Struts2 +Spring JDBC
- Qt——正则表达式
- Java中数据类型及其之间的转换
- github_将项目放在github仓库中
- Webkit之Port类(ChromeClientQt类)
- java开发中截取上传文件的文件名和后缀名
- MethodScheduler -- 基于Quartz的方法调度器 by java
- 003--VS2013 C++ 多边形绘制
- 代码整洁之道 注释与格式
- java中length和size的区别
- MyEclipse建立SpringMVC入门HelloWorld项目
- python实现将某类文件复制到特定的目录下
- Java中this分类以及在各分类下的用法或规则
- Spring MVC 前后台传值
- C语言实现密码的设置及验证
- C# WPF 实现打印预览和打印