文档章节

第十五章 位操作

yohoj
 yohoj
发布于 2015/06/06 15:54
字数 1027
阅读 6
收藏 0

#include<stdio.h>
#include<string.h>
#include<math.h>
#include <stdlib.h>

int ten(char *pbin);
int main()
{
	char * pbin="01001001";
	printf("%d\n",ten(pbin));
	return 0;
}

int ten( char * pbin)
{
	int p[100];
	int sum=0;
	int i,n;
	n=strlen(pbin);
	for(i=0;i<n;i++)
	{
		p[i]=pbin[i]-48;
	}
	for(i=n-1;i>=0;i--)
	{
		sum=sum+(p[i]*pow(2,n-1-i));
	}
	return sum;
}

#include<stdio.h>
#include<string.h> 
#define M 8*sizeof(int)+1  
 char * expand(char*destination,char*source); 
 char *reverse(char*destination,char*source);  
 char *and(char*destination,char*source1,char*source2); 
 char *or(char *destination,char*source1,char*source2); 
 char *xor(char *destination,char*source1,char*source2);   
 int main(int argc,char *argv[]) 
 {  
	if(argc < 3)     
	printf("Usage:%s [str1] [str2]\n.",argv[0]); 
	char x[M],y[M],z[M];   
	printf("     x = %s.\n", expand(x,argv[1]));  
	printf("     y = %s.\n", expand(y,argv[2]));  
	printf("    ^x = %s.\n", reverse(z,x));  
	printf("    ^y = %s.\n", reverse(z,y)); 
	printf(" x & y = %s.\n", and(z,x,y));  
	printf(" x | y = %s.\n", or(z,x,y));  
	printf(" x ^ y = %s.\n", xor(z,x,y));  	
}   
char * expand(char*destination,char*source) 
{ 
	unsigned int i;   
	for(i=0; i<M-1-strlen(source); i++)   
	destination[i] = '0';  
	destination[i] = '\0';  
	strcat(destination,source); 
	return destination;  
} 
 char *reverse(char*destination,char*source)
 {  
	char *start = destination; 
	strcpy(destination,source); 
	while(*destination)  
	{   
		if(*destination == '0')   
			*destination = '1';   
		else      
			*destination = '0';  
		destination++;  
	}   
	return start; 
}  
char *and(char*destination,char*source1,char*source2) 
{  
	char *start = destination; 
	while(*source1)  
	{  
	if(*source1 == '1'&& *source2 == '1')    
		*destination = '1';  
	else      
		*destination = '0';    		
	destination++; 
	source1++;   
	source2++;   
	}   
	return start;  
}  
char *or(char *destination,char*source1,char*source2) 
{  
	char *start = destination;  
	while(*source1)  
	{   
		if(*source1 == '1' || *source2 == '1')   
			*destination = '1';   
		else      
			*destination = '0';   
		destination++;   
		source1++;  
		source2++;   
	}   
	return start;  
}  
char *xor(char *destination,char*source1,char*source2)
 {  
	char *start = destination;  
	while(*source1)  
	{  
		if(*source1 != *source2 )   
			*destination = '1';   
		else      
			*destination = '0';   
		destination++;   
		source1++;   
		source2++;   
	}   
	return start; 
}

#include<stdio.h> 
#include<string.h>  
char * itobs(int n, char * ps); 
int bit_on(int n); 
int main(void) 
{  
	int num;   
	char bstr[8* sizeof (int) + 1];   
	puts("Please input a integer:(q to quit)"); 
	while(scanf("%d",&num) == 1)  
	{   
		printf("%d (%s)-- bit_on number:%d.\n", num, itobs(num,bstr),bit_on(num));    
		puts("Please input a integer:(q to quit)");   
	}   
	printf("Quit!\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; 
}   
int bit_on(int n) 
{  
	int count = 0;  
	while(n/2)  
	{   
		count += n%2;   
		n >>=1;   
	}   
	count +=n%2;  
	return count;
}

#include<stdio.h>
int panduan(int n,int i);
int main()
{
	int n,i;
	scanf("%d%d",&n,&i);
	printf("%d",panduan(n,i));

}
int panduan(int n,int i)
{
	int j;
	int m;
	m=8*sizeof(int);
	for(j=m-1;j>=0;j--,n >>= 1)
	{
		if(j==i+31)
			return n%2;
		
	}
}

#include<stdio.h>
#include<string.h>
void rotate_1(unsigned int x,int i);
int main()
{
	unsigned int x;
	int i;
	scanf("%d%d",&x,&i);
	rotate_1(x,i);
	return 0;
}
void rotate_1(unsigned int x,int i)
{
	int j=0,k=0;
	int n;
   int str[100],p[100],s[100];
	while(x/2)
	{
		
		str[j]=x%2;
		j++;
		x >>= 1;
	}
	str[j]=x%2;
	n=j+1;
	for(j=0;j<n;j++)
	{
		s[j]=str[n-1-j];
	}
	
	for(j=0;j<n-i;j++)
	{
		p[j]=s[j];
		s[j]=s[j+i];
	}
	for(j=n-i;j<n;j++)
	{
		s[j]=p[j-i-1];
	}
	for(j=0;j<n;j++)
		printf("%d",s[j]);
}

#include<stdio.h>
#include<string.h>
struct wei{
	int id;
	int size;
	int bold;
	int italic;
	int	underline;
};
char ali[3][8] = {"left","center","right"};
int n=0;
void output(struct wei canshu);
int font(struct wei canshu);
int size(struct wei canshu);
void alignment(struct wei canshu);
int bold(struct wei canshu);
int italic(struct wei canshu);
int underline(struct wei canshu);
int main()
{
	struct wei canshu{1,12,0,0,0};
	output(canshu);
	char ch;
	while((ch=getchar())!='q')
	{
		switch(ch)
		{
			case 'f':
				canshu.id=font(canshu);
				output(canshu);
				break;
			case 's':
				canshu.size=size(canshu);
				output(canshu);
				break;
			case 'a':
				alignment(canshu);
				break;
			case 'b':
				canshu.bold=bold(canshu);
				output(canshu);
				break;
			case 'i':
				canshu.italic=italic(canshu);
				output(canshu);
				break;
			case 'u':
				canshu.underline=underline(canshu);
				output(canshu);
				break;
			default:
				break;
		}
	}
	return 0;
}

void output(struct wei canshu)
{
	char op[2][5]={"OFF","ON"};
	if(n==0)
	{
		puts("ID SIZE ALIGNMENT B I U");
		printf("%d %d %s %s %s %s\n",canshu.id,canshu.size,ali[0],op[canshu.bold],op[canshu.italic],op[canshu.underline]);
	}
	else if(n==1)
	{
		puts("ID SIZE ALIGNMENT B I U");
		printf("  %d   %d   %s   %s   %s   %s\n",canshu.id,canshu.size,ali[1],op[canshu.bold],op[canshu.italic],op[canshu.underline]);

	}
	else if(n==2)
	{
		puts("ID SIZE ALIGNMENT B I U");
		printf("%3d%3d%5s%4s%4s%4s\n",canshu.id,canshu.size,ali[2],op[canshu.bold],op[canshu.italic],op[canshu.underline]);

	}
	puts("f)change font s)change size a)change alignment");
	puts("b)toggle bold i)toggle italic u)toggle underline");
	puts("q)quit");
}

int font(struct wei canshu)
{
	printf("Enter font id (0-255):");
	scanf("%d",&canshu.id);
	return canshu.id;
}

int size(struct wei canshu)
{
	printf("Enter font id (0-255):");
	scanf("%d",&canshu.size);
	return canshu.size;
}

void alignment(struct wei canshu)
{
	char ch;
	printf("l)left c)center r)rifht\n");
	getchar();//消除回车键的影响
	ch=getchar();
	switch(ch)
	{
		case'l':
			n=0;
			printf("%d",n);
			output(canshu);
			break;
		case'c':
			n=1;
			output(canshu);
			break;
		case'r':
			n=2;
			output(canshu);
			break;
		default:
			break;
	}


}

int  bold(struct wei canshu)
{
	int b;
	puts("1)on 0)off");
	scanf("%d",&b);
	if(b==0)
	{
		canshu.bold=0;
	}
	else
	{
		canshu.bold=1;
	}
	return canshu.bold;
}
int italic(struct wei canshu)
{
	int ita;
	puts("1)on 0)off");
	scanf("%d",&ita);
	if(ita==0)
		canshu.italic=0;
	else
		canshu.italic=1;
	return canshu.italic;
}
int underline(struct wei canshu)
{
	int u;
	puts("1)on 0)off");
	if(u==0)
		canshu.underline=0;
	else
		canshu.underline=1;
	return canshu.underline;

}


© 著作权归作者所有

共有 人打赏支持
yohoj
粉丝 0
博文 16
码字总数 14691
作品 0
宁波
私信 提问
Linux几种文件系统类型--鸟哥的Linux私房菜学习笔记

ext2/ext3 Linux 适用的文件系统类型。 由于 ext3 文件系统多了日志的记录, 对亍系统的复原比较快速,因此建议你务必要选择新的 ext3 不要用 ext2 了。 (日志式文件系统我们会在后续的第八章...

hiqj
2014/09/17
0
0
【原创】《深入剖析Tomcat》读书笔记

第一章 一个简单的Web服务器 第二章 一个简单的servlet容器 第三章 连接器 第四章 Tomcat的默认连接器 第五章 servlet容器 第六章 生命周期 第七章 日志记录器 第八章 载入器 第九章 Sessio...

pandudu
2015/12/22
46
0
《Windows Server 2008 系统管理之道》 视频突击 电子文档 视频教程 下载

《Windows Server 2008 系统管理之道》 视频突击 清华出版社 系列 系统学习 彻底掌握Windows Server 2008 Windows Server Core 电子文档 下载网址 http://www.91xueit.com 视频教程下载网址 ...

onesthan
2010/02/09
0
0
《Zabbix企业级分布式监控系统》预售

《Zabbix企业级分布式监控系统》预售 一、预售网站链接如下 二、书籍封面如下 三、该书相关信息如下 本书的读者QQ群: Zabbix企业级分布式监控 271659981 (可申请加入,验证码:Zabbix监控)...

it你好
2014/08/13
0
0
运维工作解释

运维工作解释 2017/3/9 PC小记:《运维之下》的文档作者对运维工作的解释清晰明了,有利于工作的划分和职业的规划,因而值得整理后分享。 https://github.com/opera443399/ops/tree/master/d...

pcnk
2017/03/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

微服务分布式事务实现

https://www.processon.com/view/link/5b2144d7e4b001a14d3d2d30

WALK_MAN
今天
2
0
《大漠烟尘》读书笔记及读后感文章3700字

《大漠烟尘》读书笔记及读后感文章3700字: 在这个浮躁的社会里,你有多久没有好好读完一本书了? 我们总觉得自己和别人不一样,所以当看到别人身上的问题时,很少有“反求诸己”,反思自己。...

原创小博客
今天
4
0
大数据教程(9.5)用MR实现sql中的jion逻辑

上一篇博客讲解了使用jar -jar的方式来运行提交MR程序,以及通过修改YarnRunner的源码来实现MR的windows开发环境提交到集群的方式。本篇博主将分享sql中常见的join操作。 一、需求 订单数据表...

em_aaron
今天
3
0
十万个为什么之什么是resultful规范

起源 越来越多的人开始意识到,网站即软件,而且是一种新型的软件。这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点...

尾生
今天
3
0
Terraform配置文件(Terraform configuration)

Terraform配置文件 翻译自Terraform Configuration Terraform用文本文件来描述设备、设置变量。这些文件被称为Terraform配置文件,以.tf结尾。这一部分将讲述Terraform配置文件的加载与格式。...

buddie
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部