首页 > 编程语言 >java位运算

java位运算

时间:2024-07-26 19:56:07浏览次数:11  
标签:24 java 运算 补码 System b1 println out

位运算符:针对二进制的值补码形式进行计算的
& | ^(相同为0,不同为1) ~ << >> >>>



public class WeiOptDemo1 {
public static void main(String[] args) {
byte a1 = 3;
byte b1 = 4;

    System.out.println(a1 & b1);
    System.out.println(a1 | b1);
    System.out.println(a1 ^ b1);
    System.out.println(~ b1);
}

}

计算机中所有数据的运算都是采用补码的形式进行的
3的补码:00000011
4的补码:00000100

&运算 有0则0
     00000011
   &
     00000100
  --------------
     00000000  => 0

|运算  有1则1
     00000011
   |
     00000100
  --------------
     00000111  => 7

^运算  相同则0,不同则1
     00000011
   ^
     00000100
  --------------
     00000111  => 7

~运算  1变成0,0变成1
      ~ 00000100
      --------------

补码 11111011
反码 11111010
原码 10000101

=> -5

<< : 左移,右边用0补齐,相当于乘上2的n次方
>> : 右移,左边空出来的,看最高位是1还是0,若是1就用1补齐,若是0就用0补齐,相当于除上2的n次方
>>>: 无符号右移,左边空出来的,无论最高位是0还是1,都用0补齐

public class WeiOptDemo2 {
public static void main(String[] args) {
byte b1 = 5;
System.out.println(b1<<2); // 20 = 54 = 52^2
System.out.println(b1<<3); // 5*2^3 = 40
System.out.println(b1<<5);

    System.out.println(24>>2); // 6=24/4=24/2^2
    System.out.println(-24>>2); // 6=-24/4=-24/2^2

    System.out.println(-24>>>2); //


}

}

b1的补码:00000101

<<2位:
         00000101
     (00)00010100 -> 20
        -----------

24的补码:00011000
24>>2位:
    00011000
    00000110(00)
    ----------- -> 6

 -24的原码:10011000
 -24的反码:11100111
 -24的补码:11101000
 -24>>2:
           11101000
 补码:     11111010(00)
 ------------------------
 已知补码求原码:
 补码:  11111010
 反码:  11111001
 原码:  10000110
 ---------------- -> -6

 -24的原码:10000000 00000000 0000000 00011000
 -24的反码:11111111 11111111 1111111 11100111
 -24的补码:11111111 11111111 1111111 11101000
 -24>>>2:
        11111111 11111111 1111111 11101000
        0011111111 11111111 1111111 111010(00)
        --------------------------------------- -> 1073741818

标签:24,java,运算,补码,System,b1,println,out
From: https://www.cnblogs.com/qiwei-bigdata/p/18326146

相关文章

  • 基础数论 模运算与逆元
    模运算与逆元:取模定义:\[a\bmodn\begin{cases}a-\lfloor\frac{a}{n}\rfloor\timesn\\\\\a\geq0\\-(-a\bmodn)\\\a<0\end{cases}\]取模基本性质:设\(a_0=a\bmodn,b_0=b\bmodn\)\((a+b)\bmodn=((a\bmodn)+(b\bmodn))\bmodn\)......
  • 【python基础02】 序列,元组,列表,字典,位运算
    python运算符位运算符&:按位与|:按位或^:按位异或~:按位取反<<:左移位>>:右移位x=0b11000110y=0b10100101print(bin(x&y))#0b0010print(bin(x|y))print(bin(x^y))print(bin(~x))#第一位是表示正负print(bin(x>>2))#去除右边两位print(bin(x<<2))#......
  • java 06
    输入:引入scannerimportjava.util.ScannerScannerscanner=newScanner(System.in)Stringname=mySanneer.nextInt()//输入内容在命令框输入Javainput进制:十进制转二进制:不断除以2最后将余数倒着拍;转8转16相似;位运算:1>>2:1向右位移两位;1<<2左移2原码反码补码:如......
  • 创建 Java 虚拟机JVM中的参数说明
    1、上一篇创建虚拟机的代码加参数备注varOptions:array[0..4]ofJavaVMOption;VM_args:JavaVMInitArgs;ErrCode:Integer;begin{创建Java虚拟机}FJavaVM:=TJavaVM.Create(JNI_VERSION_1_8);//这个选项设置Java类路径,指定JVM应该在哪里......
  • java静态代码检测-spotbugs
    以前使用的findbugs宣布在2016年后已经不做维护了,取而代之的是spotbugs.要想使用spotbugs,需要在代码仓库中做一些配置1.在maven项目的pom.xml文件中,加入依赖包: officalwebsiteurlreference: https://spotbugs.readthedocs.io/en/latest/maven.html<plugin><groupId......
  • LeetCode 2.两数相加 java
    力扣链接2.两数相加-力扣(LeetCode)题目描述给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字0之外,这两个数都不会以0......
  • 【一手源码展示】Java代码TikTok内嵌商城代码程序,TikTok跨境电商系统源码,TK商城源码
    这套程序已经做了很久了我这边修复二开优化也好几个版本搭建起来做起来确实费劲前后端分离的程序 二开效果页面展示:......
  • Java-----学习笔记4
    Java中的方法Java中的方法与C语言的函数有些相似,它们都是为了完成特定功能的代码块,都可以被多次调用。main方法publicstaticvoidmain(String[]args){}public---访问控制符,控制方法可见性。static---这个关键字表示该方法是静态的。void---返回类型void--不需要......
  • 写好JavaScript条件语句的5条守则
    照抄https://juejin.im/post/5bdef288e51d450d810a89c6testEquals(fruit){if(fruit==='apple'||fruit==='strawberry'){console.log('==');}},testIncludes(fruit){constredFruits=['......
  • 007-java使用socket测试远程服务器的某个端口是否可连接
    importjava.io.IOException;importjava.net.InetSocketAddress;importjava.net.Socket;/***@authorzzl*/publicclassPortChecker{publicstaticbooleanisPortReachable(Stringhost,intport,inttimeout){try(Socketsocket=newSoc......