位操作转换二进制

编程入门 行业动态 更新时间:2024-10-11 23:25:55

位<a href=https://www.elefans.com/category/jswz/34/1770947.html style=操作转换二进制"/>

位操作转换二进制

位操作转换转换二进制

可以用递归的方法将数字转换为二进制数据,也可以用C语言中的移位运算符来解决。

/** @Author: WangYunLong* @Date:   2020-03-03 20:35:54* @Last Modified by:   WangYunLong* @Last Modified time: 2020-03-03 21:13:20*/
#include <stdio.h>
#include<stdlib.h>
#include<limits.h>
char *itobs(int n,char *ps);
void show_bstr(const char *string);
int main()
{char bin_str[CHAR_BIT*sizeof(int) +1];int number;puts("Enter integers and see them in binary");puts("Non-numeric input terminates program.");while (scanf("%d",&number)==1){itobs(number,bin_str);show_bstr(bin_str);puts("\n");}puts("Bye!");getchar();getchar();return 0;
}
char *itobs(int n,char *ps)
{const static int SIZE = CHAR_BIT*sizeof(int);for(int i = SIZE-1;i>=0;i--,n>>=1){ps[i]=(01 & n)+'0';}ps[SIZE] = '\0';return ps;
}
void show_bstr(const char *string)
{int i = 0;while (string[i]){putchar(string[i]);if(++i % 4 == 0 && string[i]){putchar(' ');}}
}
  • limits.h文件中提供CHART_BIT宏,表示字节的位数
  • bin_str数组的元素个数是CHAR_BIT*sizeof(int) +1,剩下一个元素留给空字符。
  • itobs()函数返回的地址与传入的地址相同
在每执行一次for()循环中,对01 & n求值,01是八进制形式的掩码,该作用是取出n的最后一位,
但对于char类型的数组而言,要加上基础值'0'对应的ASCII码,即可完成这种转换,将其结果放在
倒数第二位上(最后一位放字符'0').
顺带一提,01 & n或者1 & n都行。

更多推荐

位操作转换二进制

本文发布于:2023-07-27 22:09:45,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1226447.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:操作

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!