zoukankan      html  css  js  c++  java
  • 位运算符、按位与、按位或、按位非、左移、右移、原码、反码、补码

    位运算符的基本规则
    1,位运算符都是针对整数的二进制数字形式而进行的。
    2,按位与运算基本规则(规则表):
    1 & 1 ==> 1
    1 & 0 ==> 0
    0 & 1 ==> 0
    0 & 0 ==> 0;
    3, 按位或运算基本规则
    1 | 1 ==> 1;
    1 | 0 ==> 1;
    0 | 1 ==> 1
    0 | 0 ==> 0
    4,按位非运算:
    ~ 1 ==> 0
    ~ 0 ==> 1
    5,按位异或运算:
    1 ^ 1 ==> 0
    0 ^ 0 ==> 0
    1 ^ 0 ==> 1
    0 ^ 1 ==> 1
    规律:相同就是0,不同就是1

    按位与运算:&
    形式:A & B; //A和B都是数字,其实是常规的10进制数字,但内部会按二进制进行计算
    含义:将A和B的二进制形式的每一个位上的二进制数字进行按位与(&)运算之后的结果。
    说明:一个数字的二进制形式通常是32位的0和1的组合,也可能是64位,但未了说明问题,我们通常只用8位。
    举例:
    $r1 =  9 & 13; //9的二进制是“1001”,13的二进制是“1101”
    结果是“00001001”,即9

    按位或运算:
    形式:A | B; //A和B都是数字,其实是常规的10进制数字,但内部会按二进制进行计算
    含义:将A和B的二进制形式的每一个位上的二进制数字进行按位或(|)运算之后的结果。
    举例:
    $r1 =  18 | 10; //18的二进制是“10010”,23的二进制是“1010”
    结果是“00011010”,即26

    按位左移运算:<<
    形式: A << n; //A是一个要被移动的数字,同样可以是普通数字,但按二进制去运算,n是一个指定要移动的位数
    含义:将数字A的二进制形式的每一个位上的数字往左边移动指定的位数n,则最左边的n位移出去了就不管了,最右边空出来的n位,补0就可以。
    举例:
    $r1 = 9 << 2; //9的二进制形式为:1001
    结果是:32 + 4 = 36

    按位右移运算:>>
    形式: A >> n; //A是一个要被移动的数字,同样可以是普通数字,但按二进制去运算,n是一个指定要移动的位数
    含义:将数字A的二进制形式的每一个位上的数字往右边移动指定的位数n,则最右边的n位移出去了就不管了,最左边空出来的n位,补0就可以(对正数,实际是补符号位)。
    举例:
    $r1 = 9 >> 2; //9的二进制形式为:1001
    结果就是:2

    按位非:
    将一个数字的二进制形的每一个二进制数字取反所得到的结果

    按位异或:
    将2个整数的二进制形式的每一个对应数字进行异或运算之后的结果。

    原码,反码,补码介绍
    原码:就是“原来的二进制码”,其实就是我们可以理解的按10进制转换为二进制之后得到的一个字符码。
    原码在数学上都是可以理解的。
    但在实际的计算机的运行过程中,却常常不用原码,所以就有反码,补码的问题。
    在此基础上上,规则:一个二进制数字的第一个位是符号位,0表示正数,1表示负数。
    举例(都以8位为例):
    7:   00000111
    -7:   10000111
    反码:
    正数的反码是其本身。
    负数的反码,就是将原码的非符号部分,每一位取反。
    举例:
    7:   00000111
    -7:   11111000

    补码:
    正数的补码是其本身。
    负数的反码,符号位不变,其余每一位取反之后,整体加1(即反码加1)
    举例:
    7:   00000111
    -7:   11111001

  • 相关阅读:
    pat 甲级 1065. A+B and C (64bit) (20)
    pat 甲级 1064. Complete Binary Search Tree (30)
    pat 甲级 1010. Radix (25)
    pat 甲级 1009. Product of Polynomials (25)
    pat 甲级 1056. Mice and Rice (25)
    pat 甲级 1078. Hashing (25)
    pat 甲级 1080. Graduate Admission (30)
    pat 甲级 团体天梯 L3-004. 肿瘤诊断
    pat 甲级 1099. Build A Binary Search Tree (30)
    Codeforce 672B. Different is Good
  • 原文地址:https://www.cnblogs.com/huangzs/p/8698510.html
Copyright © 2011-2022 走看看