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

浙公网安备 33010602011771号