zoukankan      html  css  js  c++  java
  • 位运算

    位运算符

    进制:

    数码:某一种进制中所能出现的数字

        十进制:0至9

        二进制:0、1

        八进制:0至7

        十六进制:0至9与A至F

    基数:某一种进制中所出现的数码的个数

        十进制:10(逢十进一)

        二进制:2(逢二进一)

        八进制:8(逢八进一)

        十六进制:16(逢十六进一)

    权:用于衡量,某一种进制中某一位上的数码作用大小的值,权是一个幂(xy)

    x表示:基数

    y表示:位数

    (1234)10

    数码4所在的在位的权:100 1

    数码3所在的在位的权:101 10

    数码2所在的在位的权:102 100

    数码1所在的在位的权:103 1000

    (1234)10为什么是1234

    4*100+3*101+2*102+1*103=1234

     

    (10101)2

    从右向左每一位数码所在的位的权:

    数码1所在的在位的权:20 1

    数码0所在的在位的权:21 2

    数码1所在的在位的权:22 4

    数码0所在的在位的权:23 8

    数码1所在的在位的权:24 16

    (10101)2=1*20+0*21+1*22+0*23+1*24=21

     

    8421BCD码

    可以将255之前的二进制很方便转换成十进制

    128

    64

    32

    16

    8

    4

    2

    1

    二进制数

     

    1

    1

    0

    0

    0

    0

    1

    权展开式:

        某种进制中数位上的数码与该数码所在位上的权的乘积的和,任何一种进制都可按权展开式,转换为十进制。

     

    (75)8=(?)10

    7*81 + 5*80=61

     

    (FA)16=(?)10

    F*161        A*160        =

    15*161        10*160        =(250)10

     

    十进制转换成二进制:

        分两整数与小数部分,分别进行转换,整数部分采用的是基数连除取余法。小数部分采用的是基数连乘取整法

    128

    64

    32

    16

    8

    4

    2

    1

    二进制数

         

    1

    0

    1

    十进制数

    二进制转换为八进制(或十六进制):

        1、以小数点为起点,整数部分向左,小数部分向右,每3位(或4位)一组,不足位数提整数部分在左边补0,小数部分在右边补0。

        2、再将每一组3位(或4位)二进制转换成八进制(或十六进制)数。

    (010 110 101 . 010)=(?)8

    (010 110 101 . 010)=( 265.2)8

    (10110101.01)=(?)16

    (1011 0101.0100)=(?)16

    11        5    .4

    B        5    .4

    (1011 0101.0100)=( B5.4)16

     

    原码:原码就是符号(正负号)加上二进制数

        正数的原码在最高位用0表示

        负数的原码在最高位用1表示

        注意:计算机中高位只能是第32位

    十进制数10的原码:

    0 000 0000 0000 0000 0000 0000 0000 1010

    十进制数-10的原码:

    1 000 0000 0000 0000 0000 0000 0000 1010

    反码:

        正数的反码与原码相同

        负数的反码是在原码的基础上,符号位不变,其余位取反

    十进制数10的反码:

        0 000 0000 0000 0000 0000 0000 0000 1010

    十进制数-10的反码:

        原码:1     000 0000 0000 0000 0000 0000 0000 1010

        反码:1    111 1111 1111 1111 1111 1111 1111 0101

    补码:

        正数的补码与原码相同

        负数的补码在反码的基础上+1

    十进制数10的补码:

    0 000 0000 0000 0000 0000 0000 0000 1010

    十进制数-10的补码:

    反码:1    111 1111 1111 1111 1111 1111 1111 0101

    补码:1    111 1111 1111 1111 1111 1111 1111 0110

     

    正数的原码反码补码相同

    负数的

        原码:最高位为1

        反码:在原码基础上,符号位不变,其余位取反

        补码:在反码的基础上加1

    &:按位与

    运算规则:

        参与运算的两个操作数的二进制形式,对应位上的数,如果都为1,那么结果位上的就是1,否则为0

     

    |:按位或

    运算规则:

        参与运算的两个操作数的二进制形式,对应位上的数,如果都为0,那么结果位上的就是0,否则为1(换句话说,只要有一个为1则为1)

     

    ^:按位异或

    运算规则:

        参与运算的两个操作数的二进制形式,对应位上的数,如果不同,那么结果位上的就是1,否则为0

     

     

    ~:按位非

    运算规则:

        对操作数的二进制形式每一位取反(包含符号位)

    示例:

    <<:算术左移

    运算规则:

        对参与运算的操作数的二进制形式,符号位不变,其余位整体左移,左边溢出的忽略,右边空位补0

     

    >>:算术右移

    运算规则:

        对参与运算的操作数的二进制形式,符号位不变,其余位整体右移,右边溢出的忽略,右边空位补符号位

    示例:

  • 相关阅读:
    [NOI2010] 能量采集 (数学)
    mysql双主操作记录
    linux查看版本
    netty
    idea修改文件,target目录对应的文件消失
    oracle11g的分区(range、list)索引测试
    There is a cycle in the hierarchy解决办法
    git学习转廖雪峰
    解决SVN Cleanup错误: Failed to run the WC DB work queue associated with
    nginx之 proxy_pass
  • 原文地址:https://www.cnblogs.com/nyxd/p/5354993.html
Copyright © 2011-2022 走看看