取反是什么意思?

如题所述

取反,是Java使用补码来表示二进制数,在补码表示中,最高位为符号位,正数的符号位为0,负数为1。

NOT,是汇编指令里逻辑运算符号:NOT表示取反的意思。

补码的规定如下:

对正数来说,最高位为0,其余各位代表数值本身(以二进制表示),如+42的补码为00101010。

对负数而言,把该数绝对值的补码按位取反,然后对整个数加1,即得该数的补码。

如-42的补码为11010110(00101010按位取反11010101+1即11010110)。

用补码来表示数,0的补码是单一的,都为00000000。(而在原码,反码表示中,+0和-0的表示是不单一的,可参见相应的书籍)。

而且可以用111111表示-1的补(这也是补码与原码和反码的区别)。

扩展资料:

运算方法:

1、正数取反:

先将初始数值转换成二进制数,再对二进制数的每一位(包括第一位的符号位)进行运算:

即将0变为1、将1变为0。得到的是最终结果的补码,要转换为最终结果的原码则需再次取补码,就能得到计算结果。

2、负数取反:

先将初始数值转换成二进制数,再取得二进制数的补码,之后对补码的每一位(包括第一位的符号位)进行运算:即将0变为1、将1变为0。

得到的是最终结果的补码(到达这一步后所得的二进制数为正数,由于正数的原码、反码、补码相同,后面的运算可以忽略。

视此步得到的为最终结果的二进制数),要转换为最终结果的原码则需再次取补码,就能得到计算结果。

常见相关指令:

AND 与运算

or 或运算

XOR 异或运算

NOT 取反

TEST 测试(两操作数作与运算,仅修改标志位,不回送结果)

SHL 逻辑左移

SAL 算术左移(=SHL)

SHR 逻辑右移( 每位右移, 低位进 CF, 高位补 0)

SAR 算术右移(每位右移, 低位进 CF, 高位不变)

ROL 循环左移

ROR 循环右移

RCL 通过进位的循环左移

RCR 通过进位的循环右移

参考资料:

百度百科-取反

百度百科-汇编指令

温馨提示:答案为网友推荐,仅供参考
相似回答