为了账号安全,请及时绑定邮箱和手机立即绑定

位补运算符(~tilde)是如何工作的?

位补运算符(~tilde)是如何工作的?

位补运算符(~tilde)是如何工作的?为什么~2等于-3?如何~接线员?
查看完整描述

3 回答

?
慕神8447489

TA贡献1780条经验 获得超1个赞

请记住,负数存储为二补积极的对口。举个例子,这里是-2在两个补语中的表示:(8位)

1111 1110

得到它的方法是,获取一个数字的二进制表示,取其补码(反转所有位)并添加一个。两个开始为0000 0010,通过倒置位,我们得到11111101。加一个就可以得到上面的结果。第一个位是符号位,意味着否定。

让我们来看看我们如何得到~2=-3:

这里又有两个:

0000 0010

只要翻转所有的数据,我们就可以得到:

1111 1101

好吧,在二人的补体里-3是什么样子的?从正3:0000 0011开始,将所有位翻转到11111100,并添加一个变成负值(-3),11111101。

所以,如果你简单地把比特倒置到2中,你就得到了两个补码的-3表示。

补运算符(~)只是翻转位。由机器来解释这些位元。


查看完整回答
反对 回复 2019-07-16
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

~翻转值中的位。

为什么~2-3与数字按位表示的方式有关。数字表示为二补.

所以,2是二进制值。

00000010

而~2翻转比特,所以现在的值是:

11111101

它是-3的二进制表示。


查看完整回答
反对 回复 2019-07-16
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

正如其他人提到的~只需翻转位(将1改为0和0到1)二补你得到了你看到的结果。

有一点要补充的是为什么使用2的补码,这样负数上的运算和正数上的运算是一样的。想想-3作为3应该添加以获得零,您将看到这个数字是1101记住,二进制加法就像小学(十进制)加法,只有当你到2而不是10的时候才带一个。

 1101 +
 0011 // 3
    =
10000
    =
 0000 // lose carry bit because integers have a constant number of bits.

因此1101-3,翻转你得到的部分0010也就是两个。


查看完整回答
反对 回复 2019-07-16
  • 3 回答
  • 0 关注
  • 485 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信