前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >十进制数负三的二进制数补码为_-8的补码

十进制数负三的二进制数补码为_-8的补码

作者头像
全栈程序员站长
发布2022-11-03 10:22:52
6780
发布2022-11-03 10:22:52
举报
文章被收录于专栏:全栈程序员必看

十进制转二进制补码(正负都可) 指针初学

将一个十进制正(负)整数转换为对应的二进制补码(用指针完成
十进制转二进制:1.先判断该整数是正数还是负数 如果是正数则二进制补码首位为1 , 且对应的二进制补码就是原. 如果是 负数 则二进制补码为原码基础上取反且末位加1(加1则涉及进位 )

代码:

代码语言:javascript
复制
#include"stdio.h"
#include"Stdio.h"
int main()
{ 

int *p;
int x,i;
printf("输入一个十进制整数:");
scanf_s("%d", &x);
p = (int *)malloc(sizeof(int) * 32);//为二进制分配内存空间
if (x < 0)//负数转正 如果为负数 二进制第一位为1 正数则为0
{ 

*p = 1;
x = -x;
}
else if (x > 0)    *p = 0;
//判断正负 改首位
//-----------------------------------------------------------------------
for(i=31;i>=1;i--)//原码
{ 

*(p+i) = x % 2;
x = x / 2;
}
//-----------------------------------------------------------------------
//二进制取补码规则;若x为负数则 源码换反码 且反码末位加1
if (*p == 1)//换反码
{ 

for (i = 1; i <=31; i++)
{ 

if (*(p+i) == 1)       *(p + i) = 0;
else				   *(p + i) = 1;
}
}
if (*p == 1)//负数
{ 

if (*(p+31) == 0)	*(p + 31) = 1;//最后一位为0 则直接加1
else if (*(p + 31) == 1)      //最后一位为1 进位 
{ 

for (i = 1; i <= 31; i++)
{ 

if (*(p + 31) + 1 == 2 )//逢2进1
{ 

*(p + 31) = 0;
*(p +30) += 1;
}
else if (i > 0 && *(p + i) == 2)
{ 

*(p + i) = 0;
*(p + i+1) += 1;
}
}
}
}
//-----------------------------------------------------------------------
for (i = 0; i <= 31; i++)//输出
{ 

printf("%d", *(p + i));
}
printf("\n");
system("pause");
return 0;
}

运行测试:

测试: 5 结果:000000000000000000000000000101
测试 -5
测试 -5
测试: -5 结果:11111111111111111111111111111011
测试 -5
测试 -5
测试: -7 结果:11111111111111111111111111111011
测试 -7
测试 -7

初学阶段,算法可能有问题,不妥的多提意见…

参考资料:

1.十进制转换为二进制、原码、反码、补码、移码. 2.二进制补码 百度百科.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/180121.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月19日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 十进制转二进制补码(正负都可) 指针初学
  • 代码:
  • 运行测试:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档