C语言 十进制转换成二进制转换方法,以及指定位反转

原创 2013年12月02日 11:28:06
#include <stdio.h>
char * itbs(int n,char * ps);
void show_bstr(char * str);
int inver_end(int number,int bits);
void main(){
      char bin_str[8*sizeof(int)+1];
	  int number;
	  while((scanf("%d",&number))==1){
			itbs(number,bin_str);
			show_bstr(bin_str);
			putchar('\n');
			number=inver_end(number,4);
			show_bstr(itbs(number,bin_str));
	  }
}

char * itbs(int n,char * ps){
	int i;
	static int size=8*sizeof(int);
	for(i=size-1;i>=0;i--,n>>=1){
		ps[i]=(01&n)+'0';//掩码,加上'0'的ASCII码编码可以完成该转换
	}
	ps[size]='\0';
	return ps;
}

void show_bstr(char * str){
	int i=0;
	while(str[i]){
		putchar(str[i]);
		if(++i%4==0&&str[i])
			putchar(' ');
	}
}

//指定位反转
int inver_end(int number,int bits){
	int mask=0;
	int bitval=1;
	while(bits-->0){
		mask|=bitval;
		bitval<<=1;
	}
	return number^mask;
}

 结果:

相关文章推荐

C语言 十进制转换成二进制

  • 2008年11月12日 22:51
  • 1KB
  • 下载

C语言 十进制转换成二进制

  • 2008年12月24日 10:33
  • 240B
  • 下载

二进制、十进制、十六进制之间转换方法

前言:之前开发涉及到三原色的渐变效果,然后自个根据进制之间的转换与三原色结合,写了个工具类,希望大家做到这块需求时可以帮助到大家:根据源码自己封装的十进制、二进制、十六进制转换工具类:/** * 说...

十进制负数转换成二进制数的方法及位运算

计算机中一般用补码来表示,若对于补码有不清楚之处请参考http://baike.baidu.com/view/377340.htm 负数转换为二进制,就是将其相反数(正数)的补码的每一位变反(1变0,...

C语言(11)--回文日、确定等式、fflush(stdin)、将十进制数转换成n进制数、二分法解方程

1、回文日、 2、确定等式 3、fflush(stdin) 4、将十进制数转换成n进制数 5、二分法解方程 当年份确定后,如2015年,就看20155102能否构成一个合法的日期,其中51部分是...
  • Ramay7
  • Ramay7
  • 2015年09月09日 19:10
  • 548

十进制转换成二进制c++

  • 2013年06月27日 23:54
  • 473B
  • 下载

5分钟学会十进制转换成二进制的快速口算方法 & Java输出二进制的代码

大一寒假的时候我在学校里学C语言的补码时候学会了一种十进制换成二进制的方法,不知道学计算机的是不是也是这么算的,感觉比高中数学课交的那除2取余的方法快多了,而且容易掌握和不需要笔算。具体方法如下,我会...
  • drakeet
  • drakeet
  • 2013年10月24日 17:59
  • 2458

八进制和成二进制的转换方法

  • 2011年08月27日 17:22
  • 6KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言 十进制转换成二进制转换方法,以及指定位反转
举报原因:
原因补充:

(最多只允许输入30个字)