C的中断和反码数据存储
2010-02-09 17:57
190 查看
标准c支持中断,但是中断函数不能传递参数,不能有返回值,严格意义上讲,中断函数不能被称作函数,因为没有执行绪主动调用它,函数调用路径是一条确定的顺序路径,由于中断处理是被动的,如果它有参数,那么谁传给它呢?如果它有返回值,它返回给谁呢?即使这样,中断处理也还是在栈上执行的,这里的栈是借用任意进程上下文的栈的,中断处理之所以在栈上是硬件体系决定的,而不是它非要在栈上不可,它完全可以切到自己的栈上去。
计算机为何用补码存储数据---以8位数据为例:
很多资料上解释了计算机使用补码存储数据的理由,比如什么可以将符号位和数据位一起参与运算等等,这些解释实际上仅仅解释了标而没有解释本,那么到底的原因是什么呢?本质的原因是由于计算机中存储数据是一种循环的环形形式而不是线性的形式,也就是说数据位总是可能满载的,比如8位的数据最大是8个1,此8个1加上1之后就会回环到0,也就是说8位的二进制位永远都不会表示大于8个1的数据,回环成了这里的决定性概念,好像时钟那样一圈一圈不停的重复,对于有符号类型,如果我们将数据的容量一分为二,那么我们就可以表示负数,如果将数据容量比作一个环形,那么从零点作为界限,右边表示正数,而左边表示负数,按照0为中点,使用二进制的加减法就可以得知为何负数是正数的二进制补码,这里补码的含义其实就是反码加1,为什么加1,正是由于有一个0在中间,归到哪里都不合适,因此归到负数的加法里面。
本文出自 “我来,我看,我征服” 博客,请务必保留此出处http://dog250.blog.51cto.com/2466061/1274086
计算机为何用补码存储数据---以8位数据为例:
很多资料上解释了计算机使用补码存储数据的理由,比如什么可以将符号位和数据位一起参与运算等等,这些解释实际上仅仅解释了标而没有解释本,那么到底的原因是什么呢?本质的原因是由于计算机中存储数据是一种循环的环形形式而不是线性的形式,也就是说数据位总是可能满载的,比如8位的数据最大是8个1,此8个1加上1之后就会回环到0,也就是说8位的二进制位永远都不会表示大于8个1的数据,回环成了这里的决定性概念,好像时钟那样一圈一圈不停的重复,对于有符号类型,如果我们将数据的容量一分为二,那么我们就可以表示负数,如果将数据容量比作一个环形,那么从零点作为界限,右边表示正数,而左边表示负数,按照0为中点,使用二进制的加减法就可以得知为何负数是正数的二进制补码,这里补码的含义其实就是反码加1,为什么加1,正是由于有一个0在中间,归到哪里都不合适,因此归到负数的加法里面。
本文出自 “我来,我看,我征服” 博客,请务必保留此出处http://dog250.blog.51cto.com/2466061/1274086
相关文章推荐
- C的中断和反码数据存储
- 数据在计算机中的存储形式和运算( 原码,反码,补码)&=, |=, >>=, <<=, ∧=
- java中整型数据存储方式(原码,反码,补码)
- cocos2d-x 在XML分析和数据存储
- 存储数据(缓存)
- 重学数据结构003――栈的基本操作及实现(链式存储)
- PHP+MySQL存储数据出现中文乱码的问题
- 存储、中断、总线、与I/O系统_____中断的响应次序与处理次序
- 数据持久化--数据存储到本地
- python数据持久存储:pickle模块的基本使用
- python 宝典 笔记 第十二章 存储数据和对象 (各种对象转换成字符串)
- Android中数据存储----SQLite数据库
- 求教:内存数据存储程序设计【课程设计】联系邮箱:314090812@qq.com
- sqlserver 表数据导出insert into 语句的存储过程
- 城市管网 GIS 数据表的存储
- iOS 数据持久化之使用NSUserDefaults存储数据
- Android数据存储-ContentProvider总结
- sqlserver2008设置表、存储过程等对象筛选出现“无法为该请求检索数据。 (Microsoft.SqlServer.Management.Sdk.Sfc) ”以及智能提示失效问题
- 内表数据下载到本地存储实例
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (一) —— 总览