当前位置: 首页 > article >正文

java-位运算

位运算符是对操作数以二进制比特为单位进行的操作和运算位运算数的运算对象只能是整型和字符型结果为整型。位运算就是将参与运算的数据转换成2进制的补码后计算的计算后在回到原码转换为10进制原码反码和补码10进制与2进制的转换 1. 原码 原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 2. 反码 反码的表示方法是: 正数的反码是其本身【原码】 负数的反码是在其原码的基础上, 符号位不变其余各个位取反. 3. 补码 补码的表示方法是: 正数的补码就是其本身【原码】 负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后1. (即在反码的基础上1) 整数的2进制就是源码 负数的2进制实质上补码表示。 -3 10000011—11111100—11111101【负数的原码取反1】{符号位不变} -3 00000011【3】—11111100【取反】—11111101【1】 【负数的绝对值的原码的取反1】 -7 00000111【7】—11111000【取反】—11111001【1】 -12 00001100【12】—11110011【取反】—11110100【1】下表列出了位运算符的基本运算1.与或非计算举例前四种使用正数举例负数的话需要使用补码位运算计算机基础学过 A 0011 1100 B 0000 1101 A B 0000 1100(两个都是1才是1) A | B 0011 1101(有1个1就是1) A ^ B 0011 0001(相同为0不同为1) ~ B 1111 0010 ~ A 1100 0011java代码测试Test public void test1() { // 十进制A的二进制为0011 1100 // 十进制B的二进制为0000 1101 int A 60; int B 13; System.out.println(与操作); // 进行与操作 System.out.println(A B); // 12 // 转换为二进制 System.out.println(Integer.toBinaryString(A B)); // 0000 1100 System.out.println(与操作); System.out.println(或操作); // 进行或操作 System.out.println(A | B); // 61 System.out.println(Integer.toBinaryString(A | B)); // 0011 1101 System.out.println(或操作); System.out.println(非操作); // 进行非操作 System.out.println(~A); // -61 System.out.println(Integer.toBinaryString(~A)); // 11111111111111111111111111000011 System.out.println(~B); // -14 System.out.println(Integer.toBinaryString(~B)); // 11111111111111111111111111110010 System.out.println(非操作); System.out.println(异或操作); // 进行异或操作 System.out.println(A ^ B); // 49 System.out.println(Integer.toBinaryString(A ^ B)); // 0011 0001 System.out.println(异或操作); }结果2.正数左移首先位运算是对补码进行操作的但是因为正数的补码就是原码本身所以这里直接对原码进行操作。左移/** * 正数左移 */ Test public void test2() { // 十进制A的二进制为0011 1100 int A 60; int W A 3; System.out.println(W); // 480 System.out.println(Integer.toBinaryString(W)); // 111100000 }分析在java里int类型是4字节32位的也就是说A的完整比特位为0000 0000 0000 0000 0000 0000 0011 1100这时候A左移3位可以理解为0011 1100往左边移动覆盖了三位右边补三个0结果就是0000 0000 0000 0000 0000 0001 1110 0000转换为十进制也就是480.3.正数右移/** * 正数右移,正数的无符号右移和普通右移结果是一样的。 */ Test public void test3() { // 十进制A的二进制为0011 1100 int A 60; int W A 3; System.out.println(W); // 7 System.out.println(Integer.toBinaryString(W)); // 0000 0111 }和左移一样32位比特位位0000 0000 0000 0000 0000 0000 0011 1100右移三位就是将右边的往右剔除三位左边补0。0000 0000 0000 0000 0000 0000 0000 0111转换为十进制就是7.4.正数无符号右移正数有符号右移和无符号右移没区别5.负数的左移/** * 负数左移 */ Test public void test4() { // -60的二进制原码为1011 1100其反码位1100 0011补码为1100 0100 int A -60; int W A 3; System.out.println(W); System.out.println(Integer.toBinaryString(W)); }A的二进制原码为1011 1100在java里是32位的所以第一位为1其原码为1000 0000 0000 0000 0000 0000 0011 1100反码1111 1111 1111 1111 1111 1111 1100 0011补码为1111 1111 1111 1111 1111 1111 1100 0100左移三位结果为1111 1111 1111 1111 1111 1110 0010 0000这是补码的形式换为反码1111 1111 1111 1111 1111 1000 01111 1111换位原码1000 0000 0000 0000 0000 0111 10000 0000数值部分是11110000000转换为十进制加上符号为-480。6.负数的右移Test public void test5() { // -60的二进制原码为1011 1100其反码位1100 0011补码为1100 0100 int A -60; int W A 3; System.out.println(W); // System.out.println(Integer.toBinaryString(W)); // }补码为1111 1111 1111 1111 1111 1111 1100 0100右移3位1111 1111 1111 1111 1111 1111 1111 1000-1转换位反码1111 1111 1111 1111 1111 1111 1111 0111取反得到原码1000 0000 0000 0000 0000 0000 0000 10001000转换为十进制加上符号位结果就是-8。7.负数的无符号右移它的核心规则非常简单无论正数还是负数右移后左边空出的高位一律补 0。Test public void test6() { // -60的二进制原码为1011 1100其反码位1100 0011补码为1100 0100 int A -60; int W A 3; System.out.println(W); // System.out.println(Integer.toBinaryString(W)); // }其补码为1111 1111 1111 1111 1111 1111 1100 0100无符号右移3位的话0001 1111 1111 1111 1111 1111 1111 1000由于最高位符号位变成了0这意味着移位后的结果是一个正数。在计算机中正数的原码、反码、补码都是相同的。因此我们不需要像处理负数那样进行“减一取反”的操作直接将其转换为十进制即可。8.应用场景目前就我接触到的业务里也就和plc通信的时候需要使用到位运算其他地方几乎不用尽管日常业务开发可以不用但必须理解因为很多优秀源码如 ThreadPoolExecutor、HashMap离不开位运算。

相关文章:

java-位运算

位运算符是对操作数以二进制比特为单位进行的操作和运算,位运算数的运算对象只能是整型和字符型,结果为整型。位运算就是将参与运算的数据转换成2进制的补码后计算的,计算后在回到原码,转换为10进制原码反码和补码:10进…...

OpenRocket:免费开源火箭设计与飞行仿真软件完整指南

OpenRocket:免费开源火箭设计与飞行仿真软件完整指南 【免费下载链接】openrocket Model-rocketry aerodynamics and trajectory simulation software 项目地址: https://gitcode.com/GitHub_Trending/op/openrocket 你是否曾梦想设计自己的火箭,…...

2026届学术党必备的AI辅助写作工具实测分析

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 全新范式由人工智能技术为毕业论文写作予以提供,借助自然语言处理以及生成式模型…...

第一章-01-初识对象

1.生活中或是程序中,我们都可以使用设计表格、生产表格、填写表格的形式组织数据2.在程序中设计表格,称之为:设计类(class)打印表格,称之为:创建对象填写表格,称之为:对象…...

RAGFlow 系列教程 第十一课:文本分块策略详解

系列: RAGFlow v0.25.0 源码深度解析 作者: 耿雨飞 前置知识: 已完成第十课"LLM 抽象层 – 统一模型接口"的学习 导读 在 RAG(检索增强生成)系统中,文本分块是连接"文档解析"与"向量检索"的关键桥梁。分块质量直接决定了检索精度和生成质量—…...

RAG系统出错别再“重跑“了!Doctor-RAG教你精准定位、局部修复

研究背景 现在大家用LLM做复杂问答的时候,Agentic RAG(智能检索增强生成)已经成了主流方案。简单说就是让模型一边推理、一边检索、一边生成,像侦探破案一样一步步拼凑答案。但问题来了——推理链越长,出错的概率就越…...

Upoad靶场--文件上传

摘要:文章详细介绍了Upload-Labs靶场的21个关卡,每个关卡都涉及不同的文件上传安全问题,如JavaScript过滤、MIME-Type检测、黑名单绕过、.htaccess利用、条件竞争和文件包含漏洞等。通过分析源码、修改请求包和使用Webshell测试,展…...

Xbox成就解锁终极指南:免费工具助你快速达成100%完成度

Xbox成就解锁终极指南:免费工具助你快速达成100%完成度 【免费下载链接】Xbox-Achievement-Unlocker Achievement unlocker for xbox games (barely works but it does) 项目地址: https://gitcode.com/gh_mirrors/xb/Xbox-Achievement-Unlocker Xbox Achiev…...

109 【自适应天线与相控阵技术】基于近场扫描的偏移相位中心天线测量

目录 ​编辑 1. 引言 2. DPCA基本原理与几何推导 2.1 运动平台杂波谱展宽 2.2 双相位中心空间重合条件 2.3 静止杂波对消与运动目标保留 2.4 等效单基地雷达位置 3. 阵列结构与相位中心控制 3.1 企业馈电与双通道接收 3.2 重叠孔径与分裂孔径 3.3 阵列互耦与保护带 …...

hyperf 架构人才与机制建设

“架构人才与机制建设”不是培养几个高手,而是把高手的判断力做成团队可复制的流程、标准和训练体系。在 Hyperf 场景,最佳做法是“人(梯队) 机制(评审) 资产(模板) 实战&#xff08…...

GPT5.5与代码效率优化:5个技巧让编码速度翻倍

在(c.877ai.cn)这类AI模型聚合平台上把GPT-5.5拉出来跑了一周的编程场景后,我整理了5个真正能提升编码效率的技巧。不是那种"帮我写个Hello World"的基础用法,而是能嵌入到日常开发工作流里的实战技巧。先说结论&#x…...

利用 Taotoken 模型广场为新产品选择性价比最高的文本生成模型

利用 Taotoken 模型广场为新产品选择性价比最高的文本生成模型 1. 理解模型选型的关键维度 为新产品选择文本生成模型时,需要综合考虑多个关键因素。首先是模型能力与产品需求的匹配度,例如生成内容的长度、创意性、逻辑性等。其次是成本因素&#xff…...

LittleSnitch for Linux:当macOS的看门狗终于踏上Linux的土地

LittleSnitch for Linux:当macOS的看门狗终于踏上Linux的土地 如果你是一名从macOS迁移到Linux的开发者,你一定不会对LittleSnitch感到陌生。这款macOS上大名鼎鼎的网络流量监控与防火墙工具,曾无数次在后台默默替你拦截了那些“不请自来”的…...

一些单片机学习相关

MCUMCU中文叫单片微型计算机,单片机 MCU把所有东西全部集成在一颗小芯片里:CPU 内核内存 RAM闪存 Flash(存代码)串口、GPIO、定时器、ADC 等外设不需要外接复杂内存、硬盘,上电就能直接跑代码。51内核8051内核&#x…...

3步实现Windows电脑安装安卓应用的终极方案

3步实现Windows电脑安装安卓应用的终极方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经在电脑上想要运行某个安卓应用,却因为传统模拟器太过…...

如何高效获取八大网盘直链:LinkSwift专业级下载助手实战指南

如何高效获取八大网盘直链:LinkSwift专业级下载助手实战指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 …...

观察不同模型在Taotoken平台上的计费差异与性价比选择

观察不同模型在Taotoken平台上的计费差异与性价比选择 1. 理解Taotoken的计费机制 Taotoken平台采用按Token消耗量计费的模式,不同模型根据其计算复杂度、参数量级和供应商定价策略,会对应不同的Token单价。平台提供的用量看板能清晰展示每次调用的Tok…...

终极解决方案:5分钟轻松将Word文档转换为专业LaTeX格式

终极解决方案:5分钟轻松将Word文档转换为专业LaTeX格式 【免费下载链接】docx2tex Converts Microsoft Word docx to LaTeX 项目地址: https://gitcode.com/gh_mirrors/do/docx2tex 还在为Word到LaTeX的繁琐转换而烦恼吗?手动复制粘贴、格式错乱、…...

基于STM32的甲醛浓度检测报警设计

基于STM32的甲醛浓度报警(仿真+程序)功能介绍具体功能:1.滑动变阻器模拟甲醛浓度检测;2.单片机处理,在LCD1602上显示检测的甲醛浓度和上限值;3.单片机也通过串口显示检测到的甲醛浓度和上限值&a…...

别再只用LIKE了!MySQL LOCATE函数处理字符串查找的3个实战场景(附代码)

别再只用LIKE了!MySQL LOCATE函数处理字符串查找的3个实战场景(附代码) 当我们需要在MySQL中查找字符串时,大多数人首先想到的是LIKE操作符。确实,LIKE简单易用,能够满足基本的模糊匹配需求。但在某些特定场…...

用STM32H723ZGT6的FDCAN1和FDCAN2实现板内数据互传:一个自环测试的实战项目

STM32H723ZGT6双FDCAN自环通信实战:从配置到调试全解析 在嵌入式系统开发中,CAN总线因其高可靠性和实时性被广泛应用于工业控制、汽车电子等领域。而STM32H723ZGT6作为STMicroelectronics推出的高性能微控制器,其内置的两个FDCAN控制器&#…...

CANoe+VH6501实战:手把手教你精准干扰CAN-FD的Rx报文(含CAPL代码)

CANoeVH6501实战:精准干扰CAN-FD接收报文的CAPL实现指南 当车载网络测试从传统CAN转向CAN-FD协议时,报文接收端(Rx)的故障注入成为验证ECU鲁棒性的关键环节。与发送端(Tx)干扰不同,Rx干扰需要精…...

终极RDPWrap指南:免费解锁Windows远程桌面多用户并发连接

终极RDPWrap指南:免费解锁Windows远程桌面多用户并发连接 【免费下载链接】rdpwrap RDP Wrapper Library 项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap 你是否曾因Windows家庭版或专业版无法支持多用户同时远程连接而感到困扰?想要在个人…...

FCN-32s/16s/8s效果差多少?用PASCAL VOC数据实测对比,聊聊语义分割的‘细节魔鬼’

FCN-32s/16s/8s效果差多少?用PASCAL VOC数据实测对比,聊聊语义分割的‘细节魔鬼’ 在计算机视觉领域,语义分割任务对细节的捕捉能力直接决定了模型的实用价值。当我们面对FCN系列模型时,一个核心问题始终萦绕:不同上采…...

创业公司如何借助 Taotoken 快速低成本地验证 AI 产品创意

创业公司如何借助 Taotoken 快速低成本地验证 AI 产品创意 1. 统一接入降低技术门槛 对于资源有限的创业团队而言,直接对接多个大模型厂商的 API 存在显著的技术成本。不同厂商的认证方式、请求格式和返回结构各异,开发适配层会消耗宝贵的工程时间。Ta…...

彻底解决Windows图形驱动兼容性问题:Mesa3D驱动安装与故障排除终极指南

彻底解决Windows图形驱动兼容性问题:Mesa3D驱动安装与故障排除终极指南 【免费下载链接】mesa-dist-win Pre-built Mesa3D drivers for Windows 项目地址: https://gitcode.com/gh_mirrors/me/mesa-dist-win 你是否曾在Windows上运行老旧游戏或专业图形软件时…...

【AI模型】高性能推理框架

高性能推理框架 【AI&游戏】专栏-直达 本节介绍面向生产环境的高性能推理框架,适用于需要高吞吐量、低延迟的企业级应用场景。随着大模型应用场景的不断扩展,如何高效、稳定地部署和运行大模型成为了企业和开发者面临的重要挑战。高性能推理框架通过…...

Hugging Face Transformers 加载模型时,那些容易被忽略但超有用的参数(cache_dir, proxies, revision 实战详解)

Hugging Face Transformers 加载模型时,那些容易被忽略但超有用的参数(cache_dir, proxies, revision 实战详解) 当你第一次接触 Hugging Face Transformers 时,可能只关注了 pretrained_model_name_or_path 这个核心参数。但随着…...

Linux安装配置Tomcat保姆级教程:从部署到性能调优

Linux服务器Tomcat安装及配置教程 演示环境说明 系统:Debian 12 (Linux) 内存:2G JAVA:17.0.17 一、安装JDK # Debian/Ubuntu apt update && apt install openjdk-17-jdk -y# 验证 java -version二、Tomcat 安…...

告别Vue打包玄学报错:深入Thread Loader与依赖解析,从根源上解决‘Received undefined’

深度解构Vue构建报错:从Thread Loader冲突到依赖解析的工程化实践 深夜的办公室里,显示器上闪烁的红色报错信息格外刺眼——Syntax Error: Thread Loader (Worker 4) The "from" argument must be of type string. Received undefined。这行看…...