主要是怎么用unsigned从右到左得到这个二进制数的反转(1变0,0变1)。用数字19和数字-12测试程序。对于正奇数,原始值和翻转值之间的关系是什么?
3条回答 默认 最新
- 技术专家团-小桥流水 2022-03-01 13:06关注
十进制数除以2取余数,余数保存到数组中,最后逆序输出就得到了二进制表示。
反转值把原来1变成0,0变成1,所以原值与翻转值的和就全是1,假设原值的二进制长度是n,那么原值和翻转值的和就是2的n次方-1。
比如19,二进制是10011,二进制长度是5,翻转值是01100,两者的和就是 11111,十进制结果就是2的5次方-1,也就是31
代码如下:#include <stdio.h> int main() { unsigned int n,s=0,r=1; int buf[20]={0}; int i=0,j; scanf("%u",&n); while(n) { buf[i]=n%2; n/=2; i++; } //逆序输出得到其二进制 for(j=i-1;j>=0;j--) printf("%d",buf[j]); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 汇编语言没有主程序吗?
- ¥15 这个函数为什么会爆内存
- ¥15 无法装系统,grub成了顽固拦路虎
- ¥15 springboot aop 应用启动异常
- ¥15 matlab有关债券凸性久期的代码
- ¥15 lvgl v8.2定时器提前到来
- ¥15 qtcp 发送数据时偶尔会遇到发送数据失败?用的MSVC编译器(标签-qt|关键词-tcp)
- ¥15 cam_lidar_calibration报错
- ¥15 拓扑学,凸集,紧集。。
- ¥15 如何扩大AIS数据容量