要想对程序的运行机制形成一个大致印象,就要了解信息(数据)在计算机内部是以怎样的形式来表现的,又是以怎样的方法进行运算的
在 C 和 Java 等高级语言编写的程序中,数值、字符串和图像等信息在计算机内部都是以二进制数值的形式来表现的。也就是说,只要掌握了使用二进制数来表示信息的方法及其运算机制,也就自然能够了解程序的运行机制了
那么,为什么计算机处理的信息要用二进制数来表示呢?接下来我们就从其原因开始说起
二进制并不是专门为IC设计的,根据冯诺依曼原理可以知道:他说了计算机以二进制表示
对于用二进制数表示的信息, 计算机不会区分它是数值、 文字,还是某种图片的模式等, 而是根据编写程序的各位对计算机发出的指示来进行信息的处理( 运算)。
例如 00100111 这样的二进制数, 既可以视 为 纯 粹 的 数 值 作 加 法 运 算, 也 可 以 视 为“‘”( 单 引 号, singlequotation) 文字而显示在显示器上, 或者视为■■□■■□□□这一图
形模式印刷出来。 具体进行何种处理, 取决于程序的编写方式。
2.4 便于计算机处理的“补码”
计算机在做减法运算时, 实际上内部是在做加法运算。 用加法运算来实现减法运算, 是不是很新奇呢? 为此, 在表示负数时就需要使用“二进制的补数”。 补数就是用正数来表示负数, 很不可思议吧
负数如何在单片机中体现呢?--其实也是以补码的形式储存
以补码形式:9的二进制为 0000 1001(第七位表示符号位),取反(1111 0110) 加一(1111 0111) -->0xfff7
比如:unsigned char i ;
for(i=9;i>=0;i--);i减到0的时候,由于是无符号类型,所以就变成255,而不是负1,会错误的原因是因为在嵌入式开发中我们习惯使用无符号类型的数据
其实重点就是:二进制-补码,这两个关键词