• 【Java学习】进制转换、二进制原码反码补码和位运算


    目录

    一、概述

    二、进制转换

    三、原码反码补码

    正数

    负数

    四、二进制逻辑运算(位运算Bit Wise Operation)

    &

    |

    ~

    ^

    >>

    <<

    >>>

     五、长整数与短整数转换

    (1)短——>长

    正数

    负数

    (2)长——>短


    一、概述

    • 二进制:基数是2,有2个不同的数学符号,即0和1
    • 八进制:基数是8,有8个不同的数学符号,即0-7
    • 十进制:基数是10,有10个不同的数学符号,即0-9
    • 十六进制:基数是16,有16个不同的数学符号,即0-9,A-F

    二、进制转换

    基数×位次幂+

    例如:

    • 二进制数:0101:表示1*2^0+0*2^1+1*2^2+0*2^3 = 1+4 = 5
    • 八进制数:047:表示7*8^0+4*8^1+0*8^2 = 7+32 = 39
    • 十进制数:312:表示2*10^0+1*10^1+3*10^2
    • 十六进制数:0xAF:表示F*16^0+A*16^1 = 15+160 = 175
    • 二进制和八进制转换:3位二进制等于1位八进制,以421相加,相拼
    • 二进制和十进制转换:除2求余法。对应2次幂数相加,相拼
    • 二进制和十六进制转换:4个二进制等于1个十六进制,以8421相加,相拼
    • 转换为十进制:先转换为二进制,再由二进制数每一位乘二次幂数相加

    三、原码反码补码

    • 正数

    最高位为0的是正数,正数的原码反码补码都相同

    原码:0000 0111   

    反码:0000 0111 

    补码:0000 0111 

    • 负数

    最高位为1的是负数

    原码:1000 0111

    反码:1111 1000(除符号位不变,其余取反)

    补码:1111 1001(最低位+1)

    应用:

    ①十进制负数转二进制,先求解对应正数,符号位定为1,其余位取反+1,用补码表示。

    ②二进制负数转十进制。符号位不变,其余为取反+1,得到原码。

    四、二进制逻辑运算(位运算Bit Wise Operation)

    &

    与。遇0则0

    |

    或。遇1则

    ~

    取反。1-0;0-1

    ^

    异或。同0非1(不进位加)

    >>

    右移。左边补符号位。

    <<

    左移。右边补0。

    >>>

    无符号右移。左边补0。

    应用:

    ①求2的几次方——移位

    ②两个数换位置(正整数)——位运算(如: a=a^b;b=a^b;a=a^b)

     五、长整数与短整数转换

    (1)短——>长

    • 正数

    前面全加0

    • 负数

    前面全加1

    (2)长——>短

    直接去掉前面的,会精度丢失。

  • 相关阅读:
    原生小程序 自定义封装组件
    H5 es6 foreach使用
    原生小程序底部弹出层动画过渡
    vue 动画滑动
    H5 textarea高度自适应
    关于Java日期加减,并且比较大小的方法
    activiti多实例如何配置
    常用类——Date——Calendar
    常用类-String
    Wrapper-装箱和拆箱
  • 原文地址:https://www.cnblogs.com/txge/p/13973586.html
Copyright © 2020-2023  润新知