当前位置:首页 > 科技 > 正文

java反码补码原码 按位取反运算符的方法

按位取反运算符的方法

1. 是使用波浪线符号(~)来表示。
2. 这个运算符会将操作数的每一位取反,即0变为1,1变为0。
它适用于整数类型的数据。
3. 值得注意的是,按位取反运算符会将操作数的符号位也取反,因此对于有符号整数,结果可能不是我们期望的。
如果需要按位取反一个有符号整数,可以先将其转换为无符号整数再进行操作。

二进制数在内存中以补码的形式存储。

按位取反:二进制每一位取反,0变1,1变0。

~9的计算步骤:

转二进制:0 1001

计算补码:0 1001

按位取反:1 0110

转为原码:

按位取反:1 1001

末位加一:1 1010

符号位为1是负数,即-10

var x = 10;

在计算机中一个整型数4字节,1字节8位,所以数字10在计算机中存储占32位,即

00000000 00000000 00000000 00001010,

按位取反,得

11111111 11111111 11111111 11110101,

这个二进制数据就是“~10”,最高位是1表示它是个负数,那么我们如何转化为十制数呢?

这里又涉及到了负数在计算机里的存储问题,计算机里,负数以其正值的补码形式存在。

首先搞懂 “反码”,“取反”,“按位取反(~)”,这3个概念是不一样的。

取反:0变1,1变0

反码:正数的反码是其本身,对于负数其符号位不变其它各位取反(0变1,1变0)

按位取反(~): 这将是下面要讨论的。

-------------------------------------------------------------------------------------------------

“~”运算符在c、c++、java、c#中都有,之前一直没有遇到这个运算符。

要弄懂这个运算符的计算方法,首先必须明白二进制数在内存中的存放形式,二进制数在内存中是以补码的形式存放的。

以上是问答百科为你整理的1条关于java反码的问题「按位取反运算符的方法」希望对你有帮助!更多相关java反码补码原码的内容请站内查找。