找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4992|回复: 0
收起左侧

由ds18b20的负温度读取想到的负整数补码

[复制链接]
ID:105323 发表于 2016-2-23 22:17 | 显示全部楼层 |阅读模式
计算机中的负数是以其补码形式存在的 补码=原码取反+1
个字节有8位 可以表示的数值范围在 -128到+127 用二进制表示也就是 10000000 -01111111(注意:最高位表示符号)最高位是1的都是负数 最高位是0的都是正数
如-7 原码是 10000111 然后取反(最高位是符号不用取反)得11111000加一 得11111001那么-7的二进制数就是 11111001​
如果知道一个数是负数,要把它的绝对值算出来,方法是:带上符号一起取反,再+1.​
如,ds18b20 中检测到负温度时,要打印出来 “-57”。怎么做??​
if(temp<0){a=~temp+1;}之后打印个负号,打印个a即可。。。​
因为temp在是负数,则送入变量的是这个负数的二进制数,应当把它的绝对值算出,之后打印个“-”即可。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表