29-将十进制数转成二进制数(二进制>> 和掩码实现)
#include <stdio.h> #include <limits.h> //CHAR_BIT表示当前系统char的位数,也就是每个byte的位数 #include <stdlib.h> int main() { printf("查看当前系统byte的bit数:%dbits\n",CHAR_BIT ); //设置参数 //1.设置存储bit值的数组 char bit_arr[CHAR_BIT * sizeof(int) + 1]; //2.设置掩码 int mask = 1; /* 1.怎样获取int值对应二进制的最右侧bit位上的值 1.利用掩码 1.设置掩码为00000001 参数: 00000101 & 00000001 结果:00000001 */ //3.接收键盘输入的int值 printf("请输入int值:\n"); int number; if(scanf("%d",&number) == 1) { printf("接收成功,当前number为:%d\n",number ); }else{ printf("接收参数失败,请check!!!\n"); exit(1); } int number_bak = number; //4.依次向右移动number的二进制,并将丢弃的bit值存储到数组中 //number的bit数 int size = CHAR_BIT * sizeof(int); for (int i = size -1 ; i >= 0; i--) { char last_bit = (mask & number) + '0'; //printf("%c", last_bit); bit_arr[i] = last_bit; //number = number >> 1; number >>= 1; } bit_arr[size] = '\0'; //5.输入结果,4个bit为一组,打印字符串 const char * str = bit_arr; printf("打印字符串:%s\n", str ); printf("number:%d的二进制表示为:\n", number_bak); int i = 0; while(str[i]) { putchar(str[i++]); if(i % 4 == 0) { printf(" "); } } printf("\n"); return 0; }
结果:
dawang:C dxm$ gcc hello.c ;./a.out
查看当前系统byte的bit数:8bits
请输入int值:
-5
接收成功,当前number为:-5
打印字符串:11111111111111111111111111111011
number:-5的二进制表示为:
1111 1111 1111 1111 1111 1111 1111 1011
v-gaocun-dxm:C dxm$ gcc hello.c ;./a.out
查看当前系统byte的bit数:8bits
请输入int值:
5
接收成功,当前number为:5
打印字符串:00000000000000000000000000000101
number:5的二进制表示为:
0000 0000 0000 0000 0000 0000 0000 0101
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界