以单片机思维理解书籍《程序是如何跑起来的》-02章

 要想对程序的运行机制形成一个大致印象,就要了解信息(数据)在计算机内部是以怎样的形式来表现的,又是以怎样的方法进行运算的

 在 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,会错误的原因是因为在嵌入式开发中我们习惯使用无符号类型的数据

 其实重点就是:二进制-补码,这两个关键词

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值