// c primer plus上的内容,位运算
#include <stdio.h>
char * itobs (int n,char * ps);
void show_bstr(const char *);
int invert_end(int num,int bits);
int main(void){
char bin_str[8*sizeof(int)+1];
int number;
puts("Enter integers and see them in binary.");
puts("Non-numberic input terminates program.");
while(scanf("%d",&number)==1){
itobs(number,bin_str);
printf("%d is \n",number);
show_bstr(bin_str);
putchar('\n');
number = invert_end(number,4);
printf("Inverting the last 4 bits gives\n");
show_bstr(itobs(number,bin_str));
putchar('\n');
}
return 0;
}
//整数转换成二进制串
char* itobs(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';
ps[size]='\0';
return ps;
}
//4位一组显示二进制字符串
void show_bstr(const char * str){
int i=0;
while(str[i]){
putchar(str[i]);
if(++i %4 ==0 && str[i])
putchar(' ');
}
}
//反转数最后N位
int invert_end(int num,int bits){
int mask=0;
int bitval=1;
while(bits-->0){
mask |=bitval;
bitval <<=1;
}
return num^mask;
}
分享到:
相关推荐
C语言-顺序栈实现十进制转换为二进制-八进制-十六进制
编写程序,使用函数itob(n,s,b)将输入的整数n,转换成字符串s,将s输出.转换后的字符串从最高的非零位开始输出。如果n为负数,则输出的字符串的第一个字符为’-’。b为大于1小于37的任意自然数值。当b=2时,...
用栈实现十进制转换成二进制(c语言)用栈实现十进制转换成二进制(c语言)用栈实现十进制转换成二进制(c语言)
C语言栈的方式实现十进制数转换为二进制数,完整代码,DEVC中直接使用
这是使用C语言和数据结构中栈的有关知识编写的C程序,具有较高的灵活性和实用性!可以将任意一个八进制整数转换成十进制数,非常好用!
本文实例讲述了C语言用栈实现十进制转换为二进制的方法。分享给大家供大家参考,具体如下: #include #include #include<math.h> #include #include process.h #define SIZE 100 #define STACKINCREMENT 10 #...
将非负十进制整数转化为八进制
C语言二进制字符串与十六进制字符串相互转化,利用MFC框架生成小工具。
C语言实现二进制向八进制和十六进制转换 二进制转换成十进制 再将十进制转换成R进制
(完整word版)单片机avr-c语言位运算-与或非-异或逻辑-运算介绍-详解.doc
C语言程序设计-求给定正整数n以内的素数之积;(n).c
c语言编程题:从键盘输入一个十进制数,将其转换为二进制、八进制和十六进制数,并同时输出。
十进制转换成二进制的C语言程序 能够详细明了的表示出来
描述: 把二进制数转换成十进制数。 输入: 输入是一个8位的二进制数。 输出: 把输入的数转换为十进制数输出。 输入样例: 10000001 输出样例: 129
c语言位运算c语言位运算c语言位运算c语言位运算c语言位运算
设计算法把一个十进制整数转换为二至九进制之间的任意进制数输出
C语言,实现进制转换,十进制转换为十六进制 例如输入10,转换结果为a
进制转换 把一个任意的十进制正整数 N 转换成 d 进制数。 N 是一个正整数,d 是一个大于 1 小于 10 的整数,二者均由用户输入,且两数字用换行分隔。
C语言程序设计-求一个大于10的n位整数的后n-1位的数,并作为函数值返回;
这是一个简单的程序,可以将16进制转换成二进制的程序。