我爱辅助论坛

 找回密码
 【点我注册】

QQ登录

只需一步,快速开始

查看: 9561|回复: 58

[源码] 【回答】关于按位异或与减法

[复制链接]

签到天数: 2472 天

[LV.Master]伴坛终老

发表于 2014-10-15 20:49:01 | 显示全部楼层 |阅读模式
本帖最后由 ubuntu 于 2014-10-15 20:52 编辑
这是对辰时大神@安倍晋三 的问题的回答。

因为大神们估计不开回帖通知,而且解释比较长,所以决定发主题了。大家有兴趣可以来看下,也算普及知识了。

虽然不明白易语言的具体函数实现,但是计算机的处理方法一般是一样的。


按位异或运算确实应该比减法的实现一些,不过应当注意的是,按位异或的是3^2而非3-2,这个^是异或的符号,只是这里异或的结果恰好跟减法相同,是个巧合
具体比较复杂,愿意就看下,不愿意知道前者快就行。另外程序运行也是可能有误差的,多次运行取平均比较靠谱。


【原理】我还是说下。
异或简单的说,就是二者相同时为0,不同时为1,比如1^0=1,0^0=0,按位就是每一位都是这样。
对于3和2,二进制分别是0000,0011和0000,0010,其中最左边的一位是符号位,0表示正,1表示负。
按位异或时,前6位都是0,结果也是0,第七位都是1,所以也是0,只有最后一位不相同,结果为1,所以结果0000,0001,是1,恰好跟减法相同


减法的实现原理:计算机是不会做减法的,它是把后一个数变成负数,通过加负数来运算,比如3-2就是3+(-2)。而加法的实现是通过数字的补码相加,这里又涉及原码,反码和补码。
原码就是那个二进制编码,比如3就是0000,0011,-3是1000,0011(第一位是符号位)。
反码就是正数不变,负数除了符号位,每一位都反过来,比如3的反码就是本身,-3就变成1111,1100。
补码还是正数不变,负数是反码+1,比如-3就是1111,1101。
接下来讲减法就比较简单了,将两个数的补码相加即可,对于3+(-2),就是0000,0011+1111,1110,结果是1,0000,0001,前面那个1自动溢出,剩下就是1了。


因此得出【结论】
根据比较,按位异或只要每一位都做一次异或运算就行;而减法则需要先取补码,然后再相加,因此较为复杂也是正常,不过因为都是比较基础的运算,所以相差不大。



以上纯属个人观点,有异议请提出,共同商讨。


评分

参与人数 1金钱 +2 收起 理由
2015☆神刃 + 2 申精??

查看全部评分

温馨提示:为了保护系统安全,使用辅助前,请务必使用影子系统。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

签到天数: 2472 天

[LV.Master]伴坛终老

 楼主| 发表于 2014-10-15 20:53:25 | 显示全部楼层
其实我是来装逼的。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

签到天数: 250 天

[LV.8]以坛为家I

发表于 2014-10-15 20:56:29 | 显示全部楼层
看得头晕,算了,这不适合我

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

签到天数: 2472 天

[LV.Master]伴坛终老

 楼主| 发表于 2014-10-15 20:59:57 | 显示全部楼层
枯骨生暗锈 发表于 2014-10-15 20:56
看得头晕,算了,这不适合我

不学好编程,怎么用程序控制挖掘机炒菜?不想从布鲁弗莱毕业了?

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

签到天数: 309 天

[LV.8]以坛为家I

发表于 2014-10-15 21:00:18 | 显示全部楼层
同LS。我感觉看不懂这个

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

签到天数: 115 天

[LV.6]常住居民II

发表于 2014-10-15 21:00:49 | 显示全部楼层
wtf居然又涉及今天逗比信息老师教的二进制了

fuckfuckfuck

不过感谢大大的回答

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

签到天数: 2472 天

[LV.Master]伴坛终老

 楼主| 发表于 2014-10-15 21:01:59 | 显示全部楼层
只对妳温柔 发表于 2014-10-15 21:00
同LS。我感觉看不懂这个

其实是LSS,简单的说,按位异或只要每位异或一次,但是减法要取补码再加,所以减法麻烦些。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

签到天数: 2472 天

[LV.Master]伴坛终老

 楼主| 发表于 2014-10-15 21:03:35 | 显示全部楼层
安倍晋三 发表于 2014-10-15 21:00
wtf居然又涉及今天逗比信息老师教的二进制了

fuckfuckfuck

二进制其实没啥麻烦的,你就当10进制算就行,不过算的时候,记得满2进一就行,10进制不是满10进一么。。。。。。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

签到天数: 468 天

[LV.9]以坛为家II

发表于 2014-10-15 21:15:33 | 显示全部楼层
装逼味道浓浓的

评分

参与人数 1金钱 +1 收起 理由
ubuntu + 1 土豪勋章分我一个可好?

查看全部评分

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

签到天数: 215 天

[LV.7]常住居民III

发表于 2014-10-15 21:26:35 | 显示全部楼层
太长没看

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 【点我注册】

本版积分规则

QQ|小黑屋|我爱辅助 ( 辽ICP备19006053号-1 )

GMT+8, 2025-5-3 19:39 , Processed in 0.046296 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表