C的中断和反码数据存储

简介:

标准c支持中断,但是中断函数不能传递参数,不能有返回值,严格意义上讲,中断函数不能被称作函数,因为没有执行绪主动调用它,函数调用路径是一条确定的顺序路径,由于中断处理是被动的,如果它有参数,那么谁传给它呢?如果它有返回值,它返回给谁呢?即使这样,中断处理也还是在栈上执行的,这里的栈是借用任意进程上下文的栈的,中断处理之所以在栈上是硬件体系决定的,而不是它非要在栈上不可,它完全可以切到自己的栈上去。

计算机为何用补码存储数据---以8位数据为例:

很多资料上解释了计算机使用补码存储数据的理由,比如什么可以将符号位和数据位一起参与运算等等,这些解释实际上仅仅解释了标而没有解释本,那么到底的原因是什么呢?本质的原因是由于计算机中存储数据是一种循环的环形形式而不是线性的形式,也就是说数据位总是可能满载的,比如8位的数据最大是8个1,此8个1加上1之后就会回环到0,也就是说8位的二进制位永远都不会表示大于8个1的数据,回环成了这里的决定性概念,好像时钟那样一圈一圈不停的重复,对于有符号类型,如果我们将数据的容量一分为二,那么我们就可以表示负数,如果将数据容量比作一个环形,那么从零点作为界限,右边表示正数,而左边表示负数,按照0为中点,使用二进制的加减法就可以得知为何负数是正数的二进制补码,这里补码的含义其实就是反码加1,为什么加1,正是由于有一个0在中间,归到哪里都不合适,因此归到负数的加法里面。



 本文转自 dog250 51CTO博客,原http://blog.51cto.com/dog250/1274086文链接:

相关文章
|
5月前
|
存储 C#
C# 逻辑位运符及运算原理 按位操作二进制
C# 逻辑位运符及运算原理 按位操作二进制
|
3天前
计算机加法器执行二进制加法的原理介绍
计算机加法器执行二进制加法的原理介绍
37 2
|
3天前
补码浮点数运算(设数的阶码为3位,尾数为6位(均不包括符号位)按机械补码浮点运算规则完成下列[x+y]补运算。)
补码浮点数运算(设数的阶码为3位,尾数为6位(均不包括符号位)按机械补码浮点运算规则完成下列[x+y]补运算。)
129 0
|
5月前
|
存储 网络协议
机器大小端存储模式
机器大小端存储模式
|
10月前
|
存储 IDE Java
二进制到汇编:进制,原码反码补码,位运算,通用寄存器,内存一套打通
二进制到汇编:进制,原码反码补码,位运算,通用寄存器,内存一套打通
129 1
|
12月前
|
存储
为什么用二进制进行数据传输、二进制概述及移位运算和乘除的关系
为什么用二进制进行数据传输、二进制概述及移位运算和乘除的关系
91 0
5.1.5_原反补码的特性对比
计算机组成原理之原反补码的特性对比
104 0
5.1.5_原反补码的特性对比
为什么计算机要用补码的方式来表示负数?
在回答这个问题前,我们假设不用补码的方式来表示负数,而只是把最高位的符号标志位变为 1 表示负数,
97 0
为什么计算机要用补码的方式来表示负数?
|
人工智能 BI
5.2.2_并行进位加法器
计算机组成原理之并行进位加法器
185 0
5.2.2_并行进位加法器
|
异构计算
【ALU】32-bit低时延高速整数ALU的设计|超前进位加法器
【ALU】32-bit低时延高速整数ALU的设计|超前进位加法器
【ALU】32-bit低时延高速整数ALU的设计|超前进位加法器