社区
图形处理/算法
帖子详情
二进制运算问题,高人帮忙看看!
artman
2003-07-08 09:05:28
( x1 + x2 ) xor x2 = x3
现在已知 x1 和 x3 如可求得 x2的值?
...全文
76
13
打赏
收藏
二进制运算问题,高人帮忙看看!
( x1 + x2 ) xor x2 = x3 现在已知 x1 和 x3 如可求得 x2的值?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
artman
2003-07-09
打赏
举报
回复
我的问题不是逻辑运算。
我之前还真没注意到有无解的情况,谢谢!
HUNTON
2003-07-08
打赏
举报
回复
我解的情况是很多,比如 X1 = 0, X3 != 0,就肯定无解了
SeainBlue
2003-07-08
打赏
举报
回复
不过还是有很多情况无解的,当然实在一定范围内,比如8位或者16位
是不是所有位数以内都没有解,我现在无法确定
artman
2003-07-08
打赏
举报
回复
to SeainBlue(爱海):
你的方法最实际,我目前就是这么做的,可能这是最直接/最有效的办法。我需要的运算单位是字节,最大循环256次就够了,这种方法应该没问题。
这个问题不会无解吧,我只要得到一个x2的值就行了。
to DeautyFan(悲情浪子) GoldenSword(金错刀):
你们说的是逻辑运算。
SeainBlue
2003-07-08
打赏
举报
回复
次问题好像很多无解的情况
另外还有多解的情况:x1=x3=0
很显然( x1 + x2 ) xor x2 = x3
而无论x2是什么值
SeainBlue
2003-07-08
打赏
举报
回复
a=4,b=5,c = 13
b = !c???
不对吧
GoldenSword
2003-07-08
打赏
举报
回复
(a+b) XOR b = !((a+b)* b) = !(a+b)+!b = !a*!b+!b + !b(1+!a) = !b = c
-----> b = !c;
SeainBlue
2003-07-08
打赏
举报
回复
我的代码:
#include <stdio.h>
#include <stdlib.h>
void myXor(unsigned int x1,unsigned int x3)
{
unsigned int x2 = 0 ;
unsigned int i = 0 ;
for(x2 = 0 ; x2 < 65535 ; x2 ++)
{
if( ((x1+x2)^x2) == x3)
{
printf("%d\n",x2) ;
return ;
}
}
printf("Error!") ;
return ;
}
void main(void)
{
myXor(10,22) ;
}
无敌魔仙
2003-07-08
打赏
举报
回复
有这样的:
a xor b =a*(!b) + (!a)*b
!(a+b)=(!a)*(!b)
a*(!a)=0
无敌魔仙
2003-07-08
打赏
举报
回复
拜托如果你的等号是等于的意思的话:简化后是x1*(!x2)==x3你自己可以搞定了吗
SeainBlue
2003-07-08
打赏
举报
回复
如果是与运算,这道题就没有任何计算的意义了
楼主说对不对啊
SeainBlue
2003-07-08
打赏
举报
回复
看问题了!!!
问题问的是什么?
求解x2!
我的算法除了运算范围以外没有什么错误了
skybblue
2003-07-08
打赏
举报
回复
( x1 + x2 ) xor x2 = x3 如果是数学表达式,并且是逻辑运算,那么应该这样解释x1与(逻辑加)x2,然后再与x2进行异或运算的结果是x3,如果是这样的话SeainBlue(爱海)的算法就是错误的!
位
运算
实现加法
用位
运算
实现加法也就是计算机用
二进制
进行
运算
,32位的CPU只能表示32位内的数,这里先用1位数的加法来进行,在不考虑进位的基础上,如下 1 + 1 = 01 + 0 = 10 + 1 = 10 + 0 = 0 很明显这几个表达式可以用位
运算
的“^”来代替,如下 1 ^ 1 = 01 ^ 0 = 10 ^ 1 = 10 ^ 0 = 0 这样我们就完成了简
为什么位
运算
可以实现加法
总结 1、 不考虑进位的情况下位
运算
符中的异或^可以表示+号 2、 位
运算
符中的与
运算
符&和左移
运算
符<<可以模拟加法中的进位 3、位
运算
不仅可以做加法,还可以做其它的乘法减法等:计算机本质是
二进制
运算
,许多
高人
和天书都展示了如何用位
运算
来实现让人纠结却又惊奇的事情。(所以位
运算
是可以实现加减乘除的) ...
计算某正整数换算成
二进制
后bit为1的个数
算是上一篇的续集[算法]计算某正整数换算成
二进制
后bit为1的个数电子技术 IT Tech, 算法 Algorithm, 网络转载 Reprintby Jian Xu//顺便求推荐:如何在WordPress中插入格式化的带语法高亮的代码或者数学公式,如果你知道的话,请直接在下面留言,谢谢~侃哥在准备去Cisco的面试,问我一道题:求
二进制
数中1的个数。看起来简单,不假思索地写下了num=0;whi
c语言三位数加法进位次数计,C语言用位
运算
实现加法
运算
用位
运算
实现加法也就是计算机用
二进制
进行
运算
,32位的CPU只能表示32位内的数,这里先用1位数的加法来进行,在不考虑进位的基础上,如下1 + 1 = 01 + 0 = 10 + 1 = 10 + 0 = 0很明显这几个表达式可以用位
运算
的“^”来代替,如下1 ^ 1 = 01 ^ 0 = 10 ^ 1 = 10 ^ 0 = 0这样我们就完成了简单的一位数加法,那么要进行二位的加法,这个方法可行不...
c语言程序进制,C语言编程:进制转换器
看到几个要求数制转换的题目。众所周知,人常用的是十进制,计算机常用的是
二进制
,为了观察方便,也常使用16进制表示
二进制
数。WINDOWS 中计算器,可以进行常用进制的转换,但是它缺乏其它进制的转换功能。为了学习进制,有时还要使用一些不常用的进制:5进制、7进制等等。如果把英文字符也当做数字,那就有36个数字可以使用。使用这些数字,可知最大的进制就是36进制。把不同进制的数字,转换成常用的十进制,用...
图形处理/算法
19,472
社区成员
50,678
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章