目录
1.unsigned int intvert(unsigned int x,int p,int n)实现对x的进行转换,p为起始转化位,n为需要转换的长度,假设起始点在右边.
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;