今日刷题之二进制按特殊方式转化

目录

1.unsigned int intvert(unsigned int x,int p,int n)实现对x的进行转换,p为起始转化位,n为需要转换的长度,假设起始点在右边.

1)代码如下

2)按位或:|

3)按位异或:^

4)按位左移:<<

5)itoa函数


1.unsigned int intvert(unsigned int x,int p,int n)实现对x的进行转换,p为起始转化位,n为需要转换的长度,假设起始点在右边.

如x=0b0001 0001,p=4,n=3转换后x=0b0110 0001

1)代码如下

unsigned int intvert(unsigned int x, int p, int n) //p为起始转化位,n为需要转换的长度
{
	unsigned int t = 0;
	unsigned int a = 1;
	for (int i = 0; i < n; i++) {
		t |= a;//t=t|a    ①0000|0001=0001=t         ②t=0001|0010=0011         ③0011|0100=0111=t
		a = a << 1;//①a=0010   ②0100    ③1000
	}
	t = t << p;//t=0111<<4=0111 0000
	x ^= t;//x=x^t=0001 0001^0111 0000=01100001
	return x;
}
int main()
{
	int res = intvert(0b00010001, 4, 3);
	char string[128] = { 0 };
	_itoa_s(res, string, 2);
	printf("res=%d,string=%s\n", res, string);
}

截图:

2)按位或:|

规则:二进制相同位一个为1结果就为1,其余都为0

3)按位异或:^

规则:二进制相同位相同为0,不同为1

4)按位左移:<<

规则:符号<< 二进制数左移n位,只需删除左n位,后补k个0

转成十进制的话,左移相当于乘法 <<1 乘2

                                                      <<2 乘4……以此类推

5)itoa函数

因为C和C++编译器不提供将int型数据直接作为二进制输出的方法,所以我们要用到itoa函数。

函数原型:

char *itoa( int value, char *string,int radix);

参数列表:

value:欲转换的数据;

string:目标字符串的地址;

radix:转换后的进制数,可以是10进制、16进制等。

功能:把一个整数转换成字符串。

ps:visual studio2019编译器认为itoa函数不安全,根据提示这里用的是_itoa_s;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我在凌晨等太阳¤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值