C 练习实例51-学习使用按位与 &

按位与、或、异或

1.按位与 &

0&0=0        0&1=0        1&0=0        1&1=1

2.按位或 |

0|0=0        0|1=1        1|0=1        1|1=1    

3.按位异或 ^

0^0=0        0^1=1        1^0=1        1^1=0

(只要学过离散数学懂的都懂)

(都是双目运算符)

按不同进制进行输出语句

  1. %d\n 十进制输出
  2. %o\n 八进制输出
  3. %x\n 十六进制输出

代码

#include <stdio.h>
int main()
{
	int a=25;
	printf("%d的八进制数是:%o\n",a,a);
	printf("%d的十进制数是:%d\n",a,a);
	printf("%d的十六进制数是:%x\n",a,a);
	
	return 0;
}
25的八进制数是:31
25的十进制数是:25
25的十六进制数是:19

 (c语言没有二进制的输出,可百度-手动构造函数实现十-二进制的转化)

十进制—二进制

(辗转相除法) 以25为例

25 / 2 ... 1

12 / 2 ... 0

 6 /  2 ... 0

 3 /  2 ... 1

 1 /  2 ... 1(除到商为0为止)

从下到上,于是25(十进制)=11001(二进制)

calculator可证明这个结果↓

 手动构造函数实现十-二进制的转化

(此处用int型来表示二进制数)

#include <stdio.h>
int main()
{
	int n=25;		//需要转化的十进制数
	int num=n;
	int ys;	        //余数
	int Binary=0;	//二进制数
	int temp=1;		//中间变量
	while(num){
		ys=num%2;
		Binary+=ys*temp;
		temp*=10;
		num/=2;
	}
	printf("%d的二进制数为%d\n",n,Binary);
}

运行

25的二进制数为11001

按位与、或、异或代码

#include <stdio.h>
int f(int num)
{
	int ys;	        //余数 
	int Binary=0;	//二进制数
	int temp=1;		//中间变量
	while(num){
		ys=num%2;
		Binary+=ys*temp;
		temp*=10;
		num/=2;
	}
	return Binary;
}
int main()
{
	int a=13;
	int b=14;
	printf("%d的二进制数为:%d\n",a,f(13));
	printf("%d的二进制数为:%d\n",b,f(14));
	printf("\n%d&%d=%d(十进制)\n",a,b,a&b);
	printf("%d&%d=%d(二进制)\n",a,b,f(a&b));
	printf("\n%d|%d=%d(十进制)\n",a,b,a|b);
	printf("%d|%d=%d(二进制)\n",a,b,f(a|b));
	printf("\n%d^%d=%d(十进制)\n",a,b,a^b);
	printf("%d^%d=%d(二进制)",a,b,f(a^b));
		
	return 0;
}

运行

13的二进制数为:1101
14的二进制数为:1110

13&14=12(十进制)
13&14=1100(二进制)

13|14=15(十进制)
13|14=1111(二进制)

13^14=3(十进制)
13^14=11(二进制)

computer计算器可证明这个结果 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值