求c语言,与,或,非运算函数

已知有两个二进制数了
#include<stdio.h>
#include<string.h>
char change(char *s)
{
char*p=s,str[256];
int m=0,j=1;
while(*p!='\0')
{
if(j%4==0)
{
str[m]='\0';
m+=1;
j+=1;
continue;
}
str[m]=*p++;
m+=1;
j+=1;
}
return str[256];

}
void main()
{
char str1[256],str2[256];
scanf("%s",&str1);
str2[256]=change(str1);
printf("%s",str2);

}出错,null,不知原因的,@xoaxa

按位“与”、“或”和“非”运算是C/C++中标准运算符,不需要另外编写函数。
与运算: c = a & b;
或运算: c = a | b;
非运算: ~a;
非运算: ~b

另外,!是逻辑运算符,对于a,如果a 为 0,!a = 1,如果a 不为 0,则!a = 0。追问

已知一个二进制的字符数组,怎么弄成每四个一组,两组隔着'/o'的新的字符数组?

追答

什么叫“二进制字符数组”?'/o'是什么东东?
一个由“0”和“1”组成的字符串?

追问

嗯,就是由0和1组成的字符数组,怎么每隔四个就加一个‘\0’?我弄了一个,竟然出错,你能不能帮我看看是那里出错了?或者你自己给我写一个的?谢谢

追答

#include
#include
char *Dec2Bin(unsigned, char *); // 十进制整数转换为二进制数串
char *Addcmmas(char *); // 添加逗号
int main() {
unsigned a[] = {0,12,289,2956,655936,80989789,329385,9045,375,6};
int i,n = sizeof(a)/sizeof(a[0]);
char s[42];
for(i = 0; i 0) {
s[len] = num % 2 + '0';
num /= 2;
++len;
}
s[len] = '\0';
for(i = 0; i 0; --i) {
if(k % 4 == 0) { // 每四个字符
for(j = strlen(s) + 1; j > i; --j)
s[j] = s[j - 1]; // 为逗号腾出一个字符位置
s[i] = ',';
}
++k;
}
return s;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-09-22
中的与、或、非如下:
& 按位与
| 按位或
^ 按位异或
~ 按位取反

&& 逻辑与运算符
|| 运算符
! 逻辑非运算符
第2个回答  2012-12-24
与运算: c = a & b;
或运算: c = a | b;
非运算: ~a;
非运算: ~b
第3个回答  2012-12-24
这个哪用什么函数,直接就有符号可以进行这些运算
& : 按位与运算,如:a & b
| : 按位或运算,如:a | b
! : 非运算,如:!a
第4个回答  2012-12-24
按位与:a&b
按位或:a|b
接位异或:a^b
按位取反:~a
逻辑非:!a

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网