C语言 字符串 按位与
发布网友
发布时间:2022-04-22 14:10
我来回答
共5个回答
热心网友
时间:2023-09-15 21:35
1、按位运算符就是直接对整数在内存中的二进制位进行操作运算。比如,&&运算本来是一个逻辑运算符,但整数与整数之间可以用&
进行运算。举个例子,6的二进制是110,11的二进制是1011,那么6 &
11的结果就是2,它是二进制对应位进行逻辑运算的结果(0表示False,1表示True,空位都当0处理)。
2、C语言提供了六种按位运算符:
& 按位与
| 按位或
^ 按位异或
~ 取反
<< 左移
>> 右移
3、字符串的按位与运算:
int len=strlen(str1); //假定str1与str2长度相等,若不相同,再根据要求调整代码。
char str[50]="\0";
for(int i=0;i<len&&i<50;i++)
str[i]='0'+((str1[i]-'0')&(str2[i]-'0'))
热心网友
时间:2023-09-15 21:36
int len=strlen(str1); //假定str1与str2长度相等,若不相同,再根据要求调整代码。
char str[50]="\0";
for(int i=0;i<len&&i<50;i++)
str[i]='0'+((str1[i]-'0')&(str2[i]-'0'))
热心网友
时间:2023-09-15 21:36
在函数尾部加入
char *p = str1;
char *q = str2;
while (*p && *q)
{
if (*q == '0')
*p = '0';
p++;
q++;
}
printf("%s\n", p);
getchar();
return 0;
热心网友
时间:2023-09-15 21:37
默认你输入的字符串长度相等啊,如果不等,你得用0补齐,怎么补齐很简单,我就说主要的按位与了:
int i=0;
for(i=0; i<strlen(str1); i++) //这里默认str1和str2 的长度是一样的,与的结果就保存在str1中了
{
str1[i]=(char)(48+(str1[i]-'0')&(str2[i]-'0')) ; //要转换成字符存储
}
热心网友
时间:2023-09-15 21:37
// 编写的以高位相与的函数:
char *str;
void stringv(char *str1,char *str2)
{
int i;
for(i=0;str1[i]!='\0'&&str[i]!='\0';i++)
str[i]=(str1[i]-0x30)&(str2[i]-0x30)+0x30;
str[i]='\0';
}