单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 296|回复: 6
打印 上一主题 下一主题
收起左侧

求助如何计算真值的原码、反码,补码?

[复制链接]
跳转到指定楼层
楼主
打杂的 发表于 2019-2-12 11:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
例如,机器数 10001010B, 它的真值为
138(无符号数 )
- 10 (原码)
- 117(反码 )
- 118(补码 )
这个是怎么计算得来的?
补码
负数的补码符号位为 1,数值位将其原码的数值位逐位求反后加 1 ,即负数的反码加 1。
补码的表示范围是 - 128~ + 127 ,例如,
X = - 1011010B [ X] 补 = 10100110B  这个又怎么计算出现为10100110B
请大神给到计算步骤学习学习,谢谢!

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 转播转播 分享分享 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
yzwzfyz 发表于 2019-2-12 22:17 | 只看该作者
教课书上有没有?
回复

使用道具 举报

板凳
狮巴瑞 发表于 2019-2-13 09:55 | 只看该作者
当年我们老师:取反加一
回复

使用道具 举报

地板
hhhyyyyyy 发表于 2019-2-13 18:09 | 只看该作者
https://blog.csdn.net/nimeghbia/article/details/80533651  希望能够帮助到你,里面说的很清楚
回复

使用道具 举报

5#
钻牛尖滴刘尖尖 发表于 2019-2-13 20:00 | 只看该作者
网上有这种编译代码,学一下,一举两得
例如:
//  6.递归方法十进制转化二进制
#include<stdio.h>
void tetotw(int n)
{
if(n>0)
{
tetotw(n/2);
printf("%d",n%2);        //递归为逆序输出,故先写调用函数,后写printf
}
return;
}
int main()
{
int n;
scanf("%d",&n);
tetotw(n);//调用函数
printf("\n");
return 0;
}

评分

参与人数 2黑币 +18 收起 理由
正规007 + 10 很给力!
static + 8 很给力!

查看全部评分

回复

使用道具 举报

6#
 楼主| 打杂的 发表于 2019-2-14 10:33 | 只看该作者
刚才看了下。地板的链接资料了解, 实际上补码计算方式:整数不变,负数方式是原码转反码,反码转十进制加1,例如-8,原码【1000 1000】=反码【1111 0111】=转10进制247,再进行加+1=248,248转二进制为1111 1000 补码,这个才是最终的结果
回复

使用道具 举报

7#
zhouchuantao 发表于 2019-2-20 00:41 来自手机 | 只看该作者
建议你去看书,讲的明明白白。
回复

使用道具 举报

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

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51hei电子论坛2群 联系QQ:125739409;技术交流QQ群219535678

Powered by 单片机教程网

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