首页 > 编程知识 正文

负数按位取反怎么算,2按位取反

时间:2023-05-03 09:27:17 阅读:39474 作者:2810

以位为单位进行反算

使用按位逆运算时,计算机对与操作数对应的二进制表达式中的各位进行逆运算,逆运算后的值即为按位逆运算的结果。 这没有问题。

例如,如果我的计算机是32位,则接下来计算~5的值。 计算步骤如下。

5的二进制表达式为0000000000000000000000000000000000000000000000001

执行运算(5后:1111111111111111111111111111111111111111111010 ),结果为-6

以上过程没有任何问题,但如果忘记负数的二进制表示,就会对这个结果产生疑问。 为什么11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

目前,计算机普遍使用补码来表示负数。 知道一定数量的补码,求其值的方法是,首先看到符号比特即最左边的比特,如果是1则是负数(-)则是0码则是正数),然后将该值反过来取1,得到其源代码。

例如,本例中得到的1111-1111-1111-1111-1111-1111-1010的符号位(最左边的位)为1,表示负数,为了求出其源代码,必须先将其反过来接着添加1:0000000000000000000000000101=000000000000000000000000,并在得到的源代码之前添加负号,即,- 0000000000000000000000000000 在求出源代码时,将补数反向后再加1,但由于该补数原本是在前一次运算时以~位为单位反向取原操作数而得到的,所以此时,在求出该补数的源代码时的反向运算中,将补数反向运算为原操作数

因此,对每个比特取反的计算的结论是,n=-(n 1)

例如,以~5=-(5 1,即~5=-6 js进行调整

每位取逆运算,~取2次逆运算

这里的作用是去掉小数部分

由于位运算的操作值要求为整数,其结果也是整数,所以位运算的值自动变为整数,除n之外也可以使用n0,n0,n|0

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。