当前位置 :
位运算的运算规则是什么?比如说负整数的按位求或、按位求异或怎么求?见补充:按位求或:(-3^2)我算的跟计算机算的结果一致:-1;可是(3^-2)我算的是:-1,而计算机算的是-3,怎么具体是
更新时间:2024-04-19 18:36:08
5人问答
问题描述:

位运算的运算规则是什么?比如说负整数的按位求或、按位求异或怎么求?见补充:

按位求或:

(-3^2)我算的跟计算机算的结果一致:-1;可是(3^-2)我算的是:-1,而计算机算的是-3,怎么具体是怎么算的啊?

(-3^-2)的结果应该跟(3^2)一样都是:为什么计算机算的却是:

3^~2)的结果为什么会跟(3^2)一样啊?

贾振安回答:
  首先,^是异或,不是或,异或是指位不同则为1-3^2:-0011^0010(我以四位为例,实际一般是32位,和机器有关)负数要用补码(除符号位外取反加1)计算,即1011取反加1:1101(-3补码),1101^0010得1111(补码),转...
秦科回答:
  你好,你的解释很好,对我的理解很有帮助,我翻遍了教科书和网络都找不到位运算的这些运算细节,或者都对操作数是负数的位运算避而不谈。不过我还想要你告诉我,为什么(-3^2)或(3^-2)的结果是补码需要转原码,而(-3^-2)操作前也同样转成了补码,运算后却不用转回原码呢?
贾振安回答:
  负数在计算的时候需要用补码表示才能进行计算(因为机器只知道0,1,异或不知道-这个符号怎么去计算),而显示的时候是显示的原码,所以如果是负数,就需要在计算时转补码,而如果对于2进制的有符号整数的结果符号位为1的话,输出的时候也要先转为原码的。
秦科回答:
  哦,原来是这样啊,谢谢!我还有最后一个疑问,如果得到的结果是1000(也就是-0)这样的补码的话,转回成原码的话要减1再取反,可是都不够减啊?那是不是要向高位借就是(1111)再取反成为(1000)啊?
贾振安回答:
  补码是1000,那么减1,就得0111,取反,符号位不变,0000,就是0;+0=-0=0。
最新更新
我查吗(wochama.com)汇总了汉语字典,新华字典,成语字典,组词,词语,在线查字典,中文字典,英汉字典,在线字典,康熙字典等等,是学生查询学习资料的好帮手,是老师教学的好助手。
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
电话:  邮箱:
Copyright©2009-2021 我查吗 wochama.com 版权所有 闽ICP备2021002822号-4