美文网首页
Java中的二进制相关运算

Java中的二进制相关运算

作者: 沉淀者 | 来源:发表于2022-07-31 21:05 被阅读0次

正数的原码、反码、补码都是一样的
负数第一位是1,表示负数,反码是在原码的基础上,符号位不动,其余取反;补码是反码+1

1、<< 左移
规则是带符号位移,高位移出,低位补0。左移一位相当于乘以2的一次方,左移n位相当于乘以2的n次方。(往左手边移动

注:以下数据类型默认为byte---8位

左移时不管正负,低位补0

正数:**r = 20 << 2**

  20的二进制补码:0001 0100

  向左移动两位后:0101 0000

         结果:r = 80(20*2^2)


    20的二进制补码:0000 0001 0100

    向左移动四位后:0001 0100 0000

         结果:r = 320(20*2^4)

负数:**r = -20 << 2**

  -20 的二进制原码 :1001 0100

  -20 的二进制反码 :1110 1011

  -20 的二进制补码 :1110 1100

  左移两位后的补码:1011 0000

        反码:1010 1111

        原码:1101 0000 

        结果:r = -80

  左移四位后的补码:1110 1100 0000

        反码:1110 1011 1111

        原码:1001 0100 0000

        结果:r = -320

2、>>右移
如果该数为正,则高位补0,若为负数,则高位补1;
往右手边移动

注:以下数据类型默认为byte-8位

正数:r = 20 >> 2

  20的二进制补码:0001 0100

  向右移动两位后:0000 0101

       结果:r = 5

负数:r = -20 >> 2

  -20 的二进制原码 :1001 0100

  -20 的二进制反码 :1110 1011

  -20 的二进制补码 :1110 1100 

  右移两位后的补码:1111 1011 

        反码:1111 1010

        原码:1000 0101

        结果:r = -5

3、>>> 无符号右移
也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0

正数: r = 20 >>> 2

    的结果与 r = 20 >> 2 相同;

负数: r = -20 >>> 2

注:以下数据类型默认为int 32位

  -20:原码:10000000 00000000 00000000 00010100

    反码:11111111  11111111   11111111   11101011

    补码:11111111  11111111   11111111   11101100

    右移:00111111  11111111   11111111   11111011

    结果:r = 1073741819

案例举例

byte[3]={-2,64,101};
字节里面存的是带符号的十进制,需要转换成补码的形式进行各种计算
-2                                     
原码:1000 0010
反码:1111 1101
补码:1111 1110

64
原码:0100 0000

101 
原码:0110 0101

每个字节都是8位,合起来就是1111 1110,0100 0000,0110 0101
现在需求是这样:
分别取前12位和后12位算出十进制int值
也就是1111 1110,0100和0000,0110 0101

代码运算应该怎么实现?


5df3b5e7ae20264461ab18f4c98cca5.jpg

相关文章

  • Java中的二进制相关运算

    正数的原码、反码、补码都是一样的负数第一位是1,表示负数,反码是在原码的基础上,符号位不动,其余取反;补码是反码+...

  • 笔记

    Java中常用的计算方法 Java异或运算总结 异或运算的性质: 异或运算是基于二进制的位运算,采用符号XO...

  • 算法整理(1) 位运算相关

    运算符 位运算符用来对二进制位进行操作,Java中提供了如下的位运算符:位运算符中,除 ~ 以外,其余均为二元运算...

  • JAVA加密系列(四)- 位运算加密

    JAVA加密系列(四)- 位运算加密 位运算介绍 程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是...

  • JAVA位运算等运算符总结

    JAVA位运算等运算符总结 一、概述 运算符是一种“功能”符号,用以通知 Java 进行相关的运算。 Java 语...

  • Java位运算符及二进制常识(转)

    一、位运算 二、位移运算 三、二进制数 以Java中最常使用的int类型为例(32位)。 ㈠ 符号位 二进制数最左...

  • 位运算符

    Java 位运算符 在Java中存在着这样一类操作符,是针对二进制进行操作的。它们各自是&、|、^、~、>>、<<...

  • 【Java】位运算符

    1、Java中的位运算符(操作符) 位运算符主要针对二进制,它包括了:“与”、“非”、“或”、“异或”。从表面上看...

  • 位运算和二叉树

    剑指offer所有的题目总结 牛客 java中的二进制与按位运算 1. 输入一个整数,输出该数二进制表示中1的个数...

  • Java基础-位运算

    1-1 Java基础-位运算什么是位运算?一个字节=8位二进制1k=1024字节1k=1024*8位二进制 位运算...

网友评论

      本文标题:Java中的二进制相关运算

      本文链接:https://www.haomeiwen.com/subject/uwarwrtx.html