按位补码运算符(~颚化符)
原文:https://www . geeksforgeeks . org/bitwise-complex-operator-tilde/
先决条件: C/c++中的按位运算符 Java 中的按位运算符
按位补码运算符是一元运算符 (仅适用于一个操作数)。它取一个数字,然后把它的所有位反转。当按位运算符应用于位时,所有的 1 变成 0,反之亦然。按位补码的运算符是 ~(颚化符)。
示例:
输入:~ 0000 0011 T3】输出: 1111 1100
输入:1110 0111 T3】输出: 0001 1000
应谨慎使用按位补码运算符。如果结果存储在无符号变量中,那么~运算符对一个小数字的结果可以是一个大数字。如果结果存储在有符号变量中,则结果可能是负数(假设负数以 2 的补码形式存储,其中最左边的位是符号位)。
输入: n = 2 二进制形式的 2 = 0010 对 2 = ~ 0010 = 1101 1101 的按位补码运算相当于十进制值 13。
预期输出:13 T3】正确输出: -3
编译器返回输入值的 2 的补码。
C
// C program to implement
// the above approach
#include <stdio.h>
// Driver code
int main()
{
int n = 2;
printf("Bitwise complement of %d : %d",
n, ~n);
return 0;
}
C++
// C++ program to implement
// the above approach
#include <iostream>
using namespace std;
// Driver code
int main()
{
int a = 2;
cout << "Bitwise complement of " <<
a << " : " << ~a;
}
Java 语言(一种计算机语言,尤用于创建网站)
// Java program to implement
// the above approach
import java.io.*;
// Driver code
class GFG
{
public static void main (String[] args)
{
int a = 2;
System.out.println("Bitwise complement of " +
a + " : " + ~a);
}
}
Python 3
# Python3 program to implement
# the above approach
# Driver code
n = 2
print("Bitwise complement of {n} :",
~n)
C
// C# program to implement
// the above approach
using System;
class GFG{
static public void Main()
{
int a = 2;
Console.WriteLine("Bitwise complement of " + a +
" : " + ~a);
}
}
java 描述语言
<script>
// JavaScript program to implement
// the above approach
// Driver code
let a = 2;
document.write("Bitwise complement of " +
a + " : " + ~a);
// This code is contributed by Potta Lokesh
</script>
输出:
2 的按位补码:-3
解释: 2(~ 2)的按位补码是-3 而不是 13,但是为什么呢? 当数字以 10 为基数打印时,非运算的结果可能会令人惊讶。特别是正数可以变成负数,反之亦然。
让我们首先找到 2 的按位补码的二进制表示,它是-3
负数存储为正数的二进制补码。
2 的补码: 2 的补码是对二进制数的运算。一个数的 2 的补码等于该数的补码加 1。
示例:
2(~ 0010)的逐位补码运算: 1101
计算 3 的 2 的补码: 3 的二进制形式=0011 3 的 1 的补码= 1100 将 1 加 1 的补码= 1100 +1 2 的 3 的补码= 1101
注: 2 的按位补码与-3 的二进制表示相同
因此,从上面的例子可以得出结论-
- 对于任意整数 n,n 的按位补码将是-(n+1)。
- N = ~N 的按位补码(以 2 的补码形式表示)。
- ~N= -(~(~N)+1) = -(N+1)的 2’补码。
版权属于:月萌API www.moonapi.com,转载请注明出处