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

  • 相关阅读:
    织梦后台如何生成站点地图sitemap.xml
    滚轮滚动一定距离触发导航顶部固定,且所点击的关键词,背景字体变色
    超简单横向选项卡
    后台域名重定向301
    JS检测是否是360浏览器
    《深入理解Java虚拟机》-----第2章 Java内存区域与内存溢出异常
    java基础(十七)----- 浅谈Java中的深拷贝和浅拷贝 —— 面试必问
    java基础(十六)----- equals()与hashCode()方法详解 —— 面试必问
    java基础(十五)----- Java 最全异常详解 ——Java高级开发必须懂的
    java基础(十四)-----详解匿名内部类——Java高级开发必须懂的
  • 原文地址:https://www.cnblogs.com/huangzs/p/8698510.html
Copyright © 2011-2022 走看看