单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 449|回复: 6
收起左侧

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

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

回复

使用道具 举报

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  希望能够帮助到你,里面说的很清楚
回复

使用道具 举报

钻牛尖滴刘尖尖 发表于 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 很给力!

查看全部评分

回复

使用道具 举报

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

使用道具 举报

zhouchuantao 发表于 2019-2-20 00:41 来自手机 | 显示全部楼层
建议你去看书,讲的明明白白。
回复

使用道具 举报

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

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51Hei单片机16群 联系QQ:125739409;技术交流QQ群7344883

Powered by 单片机教程网

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