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';
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com