数码之家

 找回密码
 立即注册
搜索
查看: 759|回复: 4

[C51] 计算一个整数的完整二进制

[复制链接]
发表于 2023-10-17 09:31:21 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
计算完整二进制
//计算一个整数的完整二进制
#include<stdio.h>
void erjinzhi();
int main()
{
erjinzhi();
return 0;
}
void erjinzhi()//这是个计算完整二进制的函数
{
printf("输入一个数求出这个数的完整二进制\n");
printf("----------------------------------------\n");
int a;
scanf("%d",&a);
for(int w=31;w>=0;w--)
{
int j=(a>>w)&1;
printf("%d",j);
if((w)%4==0)
{
printf(" ");
}
}
printf("\n\n");
printf("----------------------------------------");
printf("\n");
}







发表于 2023-10-17 10:20:48 | 显示全部楼层
你这算法有BUG啊,int型变量是16位的,所以for循环里面只要15次就行了。
回复 支持 反对

使用道具 举报

发表于 2023-10-18 23:50:19 | 显示全部楼层
owenql 发表于 2023-10-17 10:20
你这算法有BUG啊,int型变量是16位的,所以for循环里面只要15次就行了。


负数应该是bug
回复 支持 反对

使用道具 举报

发表于 2023-10-19 00:57:17 | 显示全部楼层
owenql 发表于 2023-10-17 10:20
你这算法有BUG啊,int型变量是16位的,所以for循环里面只要15次就行了。

别挑 bug 了,能跑已经不错。

sizeof(int) 跟平台有关,一般规定 sizeof(char) < sizeof(short) <= sizeof(int) <= sizeof(long).
在 win32 下一般 sizeof(int)=32,在老系统、8bit/16bit 单片机下 sizeof(int)=16.

另外就是符号的问题,兴许楼主就是要演示负数的二进制。但是写的的确一言难尽,高度依赖编译器
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-24 18:02:26 | 显示全部楼层
t3486784401 发表于 2023-10-19 00:57
别挑 bug 了,能跑已经不错。

sizeof(int) 跟平台有关,一般规定 sizeof(char) < sizeof(short)  ...

听君一席话,犹如醍醐灌顶
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-29 15:40 , Processed in 0.124800 second(s), 10 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

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