今天追源码的时候无意中发现了这样一种运算

【安全算法之MD5】MD5摘要运算的C语言源码实现 大家都知道,MD5是一种摘要运算算法,关于更多的摘要算法,可以参考我之前的一篇文章:摘要算法汇总 今天要给大家带来的是MD5摘要运算的源码实现,废话不多说,直接上源码: 先看头文件,什么了一些结构体定义和操作宏定义,以及导出的3个API接口: #ifndef __MD5_H__ #define __MD5_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #include <stdint.h> typedef 阅读详情

本来今天只是想了解下分布式的,结果无意间看到了ThreadLocal,又跑去追ThreadLocal源码了,结果卡在了这个位置
后来在网上翻阅资料和自己的测试 才整明白这个运算的使用规则

在这里插入图片描述

一直以为& |运算符只是一种逻辑运算符,只能得到布尔值,没想到也可以用来做数值运算
大致的原理如下:
首先得知道计算机处理的二进制指令, 1代表true,0代表false
然后计算机在进行运算的时候,会将十进制转换成二进制,然后进行判断。
比较规则:
如果是 & 运算的话: 比较两个二进制的相同位上的值是否都为1, 如果是都为1的话,取1,否则取0
如果是 | 运算的话: 比较两个二进制的相同位上的值是否都为0, 如果都为0的话,取0,否则取1
最后将比较得到的二级制结果转换成十进制,得到最终值

public class Test {
    /**
     * 用于测试: &的用法
     * 例如: 5的二进制为101
     *       4的二进制位100   
     *  根据以上比较规则得到二进制值为 100
     *  转换成十进制就是 4
     */
    @Test
    public void test1(){   // 5 - > 101   4 - > 100     100     ->4
        int i1 = 5 & 4;
        int i2 = 4 & 4; // 4: 100    4:100    100    -> 4
        int i3 = 3 & 4; // 3: 011    4:100    000    -> 0
        int i4 = 6 & 3; // 6: 110    3:011    010    -> 2
        System.out.println("i1 = " + i1);
        System.out.println("i2 = " + i2);
        System.out.println("i3 = " + i3);
        System.out.println("i4 = " + i4);
    }
}

输出结果
在这里插入图片描述

深入剖析Java逻辑运算符,解决日常开发难题 在日常的Java开发中,逻辑运算符是经常使用的一种运算符。但是,由于逻辑运算符的复杂性和使用频率高,经常会出现一些难以预料的问题,给开发带来不小的麻烦。本文将对Java逻辑运算符进行深入剖析,帮助开发者解决日常开发中遇到的难题。本文从源码解析、应用场景案例、优缺点分析等方面对Java逻辑运算符进行了详细剖析。同时,本文提供了测试用例,确保读者可以通过代码实践更好地掌握逻辑运算符的使用。Java逻辑运算符主要包括与(&&)、或(||)、非(!)三种,它们通常用于两个或多个布尔表达式之间的运算。 阅读详情

相关推荐

图像算术运算及其源码实践

图像增强是数字图像处理中的一个核心分支,其目的是改善图像的质量,使之更适合于特定应用的需求。图像增强的方法多种多样,包括直方图均衡化、空间域滤波、频率域处理、以及通过算术运算改善图像对比度和亮度等。图像增强的目的主要包括:提高图像的清晰度。增强图像中感兴趣区域的细节。改善图像的对比度和亮度。提高图像的可视性。常用的图像增强方法有以下几种:直方图均衡化:通过改变图像的直方图分布,来增强图像的整体对比度。

weixin_26854475的博客 755

高效取模运算之按位与(&)运算与扰动函数(HashMap源码简析)

高效取模运算(&)与扰动函数 前一段时间听到有人问HashMap是用链表数组还是用红黑树数组实现的,所以博主今天阅读了一下HashMap的源码。 在阅读HashMap源码时,发现了一个用的很少的表达式,经过网上查阅资料还有一些计算机组成原理的一些相关知识搞懂了这个表达式意义和优点。 接下来我来分享一下我追源代码的过程和对HashMap源码以及这个高效取模运算的理解。 1.测试的准备工作 因...

sww_ang的博客 1896

OASIS协议标准文档的解读_第一部分

OASIS标准协议的文档的解读。完整原协议的中文翻译和解读。

洋葱的专栏 4900

弄懂Android 源码中那些巧妙位运算

01 前言 在查看源码中,经常会看到很多这样的符号“&”、“|”、“~”,咋一看挺高大上;仔细一看,有点懵;再看看,其实就是大学学过的再普通不过的与、或、非。今天小盆友就以简单的形式分享下,同时也是作为笔记记录,等某天突然懵逼时可以回来看看,话不多说,开始撸。 02 与或非是啥? 或许,大学上的课,在还没毕业时就还给老师了,所以我们先重温下。 1、与运算符 & 知识点:两位同时为...

weixin_34066347的博客 313

HFSS实战:手把手教你设计3.3-10.6GHz超宽带微带天线(附S11优化技巧)

本文提供了一份基于Ansys HFSS的超宽带微带天线实战设计指南,详细讲解了从3.3GHz到10.6GHz天线的建模、仿真与优化全流程。文章重点剖析了阻抗匹配的核心挑战,并分享了通过接地板开槽、参数化扫描及目标驱动优化等系统性技巧来优化S11曲线的实用方法,帮助射频工程师快速掌握超宽带天线设计的关键技能。

2y3u4i5o6p的博客 1080

维护测试监控LLM应用

LangFuse: 开源 + SaaS(免费/付费),LangSmith 平替,可集成 LangChain 也可直接对接 OpenAI API;LangSmith: LangChain 的官方平台,SaaS 服务(免费/付费),非开源,企业版支持私有部署;调试 Prompt 的 Playground测试/验证系统的相关指标数据集管理各种指标监控与统计:访问量、响应时长、Token 费等等。

SunnyRivers 1777

今天发现了c++符号重载的一个非常实用的使用实例。

 在看LiteSQL这个项目的源码的时候发现一段非常有趣的代码: string ind = string(" ") * indent; 我的第一反应是:string 竟然还可以这样用?随即些了一段测试代码: #include #include using namespace std; int main(int argc, char *argv[]) { string str = string("#") * 30; cout $ g++ -o

古日亚瑟的专栏 764

Windows 10 本地开发环境:用 ShardingSphere-Proxy 5.4.1 快速搭建 MySQL 分库分表测试环境

本文详细介绍了在Windows 10系统中使用ShardingSphere-Proxy 5.4.1快速搭建MySQL分库分表测试环境的完整教程。从环境准备、MySQL配置到ShardingSphere-Proxy的核心设置,逐步指导开发者完成本地开发环境的搭建,并提供了分片策略详解和常见问题排查方法,帮助开发者高效验证分库分表功能。

weixin_28366053的博客 214

[GO语言基础] 四.算术运算、逻辑运算、赋值运算、位运算及编程练习

作为网络安全初学者,会遇到采用Go语言开发的恶意样本。因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识;另一方面是分享与读者,希望大家一起进步。前文介绍了Golang的变量、数据类型和标识符知识,并通过12道编程练习进行提升。这篇文章将介绍运算,包括算术运算、逻辑运算、赋值运算、位运算及编程练习。 这系列文章入门部分将参考“尚硅谷”韩顺平老师的视频和书籍《GO高级编程》,详见参考文献,并结合作者多年的编程经验进行学习和丰富,且看且珍惜吧!后续会结合网络安全进行GO语言实战深

杨秀璋的专栏 8352

PCIe 6.0 – 关于 PCI Express Gen6 您需要知道的一切

幸运的是,PCIe 6.0 FEC 足够轻,对延迟的影响最小。在电气层上,PCIe 6.0 使用 PAM4 信号(“四级脉冲幅度调制”),每个时钟周期将 2 位组合为 4 个幅度级别(00、01、10、11),与 PCIe 5.0 和前几代相比,它使用 NRZ 调制,每个时钟周期 1 位和两个幅度级别 (0, 1)。虽然 PAM4 信号更容易出错,但由于调制技术的性质,与 PCIe 5.0 相比,通道损耗不受影响,因此 PCB 上 PCIe 6.0 信号的范围将与 PCIe 5.0 相同。

qq_43416206的博客 3427

数据治理路径之辩:从“先治后用”到“边用边治”,企业如何选择最优路径?

数据治理是企业在数智化建设中的核心挑战,主要涉及三种时序策略:先治理后使用、先用后治理和边用边治。先治理后使用强调在数据应用前建立完整的治理框架,适合高合规要求的行业,但可能响应滞后。先用后治理则优先释放数据价值,适合快速变化的业务环境,但可能累积数据质量问题。边用边治寻求动态平衡,通过持续改进实现治理与应用的同步迭代,适合复杂数据环境。技术选型决策矩阵和实施方法论提供了具体的操作指南,建议根据组织特性和业务需求选择适配方案,并通过渐进式演进路径实现治理与业务的共生演进。

石榴姐yyds 405

位与运算与取余

关于位与运算&与取余今天在研究hashmap源码的时候,发现其源码中在解决Entry分布时,本来大多数人以为会用index = hash % length,但是源码中却使用了index = hash & (lenth -1)的方式。/** * The default initial capacity - MUST be a power of two. */ static final int

xavierqwb的博客 3872

39-高级优化技术:指令调度与乱序执行 - 手把手教你手写CPU

本文介绍了现代处理器设计中提高指令级并行性(ILP)的两种关键技术:指令调度和乱序执行。指令调度分为静态调度(由编译器完成)和动态调度(由硬件完成),后者能更好适应运行时情况但复杂度更高。乱序执行通过动态重排指令顺序提高硬件利用率,其核心组件包括重排序缓冲区、保留站和寄存器重命名。文章提供了保留站的Verilog实现示例,并分析了不同优化技术在性能、硬件开销和功耗方面的权衡。最终指出,CPU设计需根据性能、功耗等需求选择合适的优化技术。

2301_79143213的博客 85

JavaScript数字运算必备库——big.js源码解析

概述 在我们常见的JavaScript数字运算中,小数和大数都是会让我们比较头疼的两个数据类型。 在大数运算中,由于number类型的数字长度限制,我们经常会遇到超出范围的情况。比如在我们传递Long型数据的情况下,我们就只能把它转换到字符串进行传递和处理。 而在小数点数字进行运算的过程中,JavaScript又由于它的数据表示方式,从而导致了小数运算会有不准确的情况。最经典的一个例子就是0.3-0.2,并不等于0.1,而是等于0.09999999999999998。 在之前的博客中我

weixin_42899690的博客 7693

【学习系列】SAP RAP 20:Unmanaged场景开发示例-调用BAPI、BAPI包装类、BO接口创建标准采购订单

本文介绍了在SAP RAP(Restful ABAP Programming)框架下,通过三种方式实现采购订单创建的方案。首先分析了RAP框架对传统BAPI调用的限制,特别是禁止显式COMMIT语句的要求。随后详细阐述了三种实现方式:1)直接调用传统BAPI(仅支持OP环境);2)使用BAPI包装类(仅支持OP环境);3)调用标准业务对象接口(支持所有环境)。 文章重点说明了在unmanaged场景下的技术实现细节,包括字段控制、缓冲区管理、测试运行与实际调用的分离处理等。针对每种方式都提供了完整的实施步骤

DeveloperMrMeng的博客 597

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Android中的位运算

文章目录位运算 近期在阅读Android源码中发现了许多与位运算相关的代码,其实以前在使用Intent相关常量的时候也遇到过,但是没有怎么深入了解,今天趁此机会分析一下。 位运算 如果你是windows10的操作系统,你可以打开计算器输入以下十六进制,再把它们转换成二进制数字。 0x10000000(16) = ‭‭00010000000000000000000000000000‬‬(2) 0x2...

RQ997832的专栏 634

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

位运算,安卓源码里的各种Flag

一直看不懂源码里的各种位运算,各种flag与非或非的,头大。 View里面有各种状态,都是用flag常量来标记的,然后用一个成员变量跟这些值通过位运算,来判断view当前的状态。 奈何在学校的时候没有好好学,各种知识都不记得了,今天重温Handler那块的源码时,突然有了灵感。 MessageQueue里面有个next方法,从消息队列中死循环不停取出消息,当然这个跟我要讲的内容无关,我贴出来

金克丝的美好初衷 1334

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

HashMap中散列运算用到的与运算

HashMap中散列运算用到的与运算。 首先,在开始之前,我们需要了解HashMap的存储原理,就是链表和数组,这里就不赘述了,不太懂的可以自行百度一下。 这是HashMap源码中,put方法所调用的底层方法,我们要关注的是(n - 1) & hash这一段的逻辑运算。 在下面这个putVal方法里,入参hash是通过HashMap的hash()方法计算得出。而n为HashMap的capacity(容量),默认是16。 final V putVal(int hash, K key, V value,

weixin_43966857的博客 1469

android位运算简单讲解

一、前言 在查看源码中,经常会看到很多这样的符号“&”、“|”、“~”,咋一看挺高大上;仔细一看,有点懵;再看看,其实就是大学学过的再普通不过的与、或、非。今天小盆友就以简单的形式分享下,同时也是作为笔记记录,等某天突然懵逼时可以回来看看,话不多说,开始撸。 二、与或非是啥? 或许,大学上的课,在还没毕业时就还给老师了,所以我们先重温下。 1、与运算符 & 知识点...

weixin_33670786的博客 421

二进制运算与Java逻辑&

背景摘要:二进制是计算机专业的入门篇,01010101010101010011001011011010100101010101010101010101010100101101011001010110101011110101010101010101011。好那么关于二进制的我们说了这么多,再说说 逻辑"&",今天主要根据JDK1.7HashMap源码indexFor方法来进行解析。讲其的运算规则详情与其作用。 一、二进制运算结构解析 大家应该都知道程序有很多进制,好的那我们今天只讲老祖宗二进制

qq_43227967的博客 468

【基础】位与运算与取余

关于位与运算&与取余 今天在研究hashmap源码的时候,发现其源码中在解决Entry分布时,本来大多数人以为会用index = hash % length,但是源码中却使用了index = hash & (lenth -1)的方式。 /** The default initial capacity - MUST be a power of two. */ static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16

qq_33632004的博客 772

java 位运算 优点_说说Java 位运算

本文首发于个人微信公众号《andyqian》, 期待你的关注~前言我们都知道,在计算机世界里,再复杂,再美的程序,到最后都会变成0与1。也就是我们常说的:二进制。二进制相信大家都很熟悉。与现实世界不同的是,在现实世界里,我们通常都是用十进制来表示的,也就是遇十进一,这些都是我们熟悉的。到这里,我们就会发现端倪,现实世界中的十进制与计算机中的二进制其计量单元是不一样的。那它们之间怎么转换呢?这就涉及...

weixin_36193690的博客 359

JavaSE--运算符--源码反码补码

今天的博客是关于JavaSE的运算符的心得总结,这一章节较为简单,整体的话我用了一张思维导图来总结我的知识点,如果有需要的小伙伴点击下方链接去下载,最后希望大家一起进步,蟹蟹~ 链接:https://gitmind.cn/app/doc/5142400323 密码:2459 ...

weixin_53860901的博客 286

说说Java 位运算

  前言      我们都知道,在计算机世界里,再复杂,再美的程序,到最后都会变成0与1。也就是我们常说的:二进制。二进制相信大家都很熟悉。与现实世界不同的是,在现实世界里,我们通常都是用十进制来表示的,也就是遇十进一,这些都是我们熟悉的。到这里,我们就会发现端倪,现实世界中的十进制与计算机中的二进制其计量单元是不一样的。那它们之间怎么转换呢?这就涉及到一些比较基础的计算机知识。不在本文中讨论(如...

li123128的博客 122

【OpenCV入门教程之十一】 形态学图像处理(二):开运算、闭运算、形态学梯度、顶帽、黑帽合辑

上篇文章中,我们重点了解了腐蚀和膨胀这两种最基本的形态学操作,而运用这两个基本操作,我们可以实现更高级的形态学变换。 所以,本文的主角是OpenCV中的morphologyEx函数,它利用基本的膨胀和腐蚀技术,来执行更加高级的形态学变换,如开闭运算、形态学梯度、“顶帽”、“黑帽”等等。 先上几张示例程序的截图吧: 有没有很熟悉这张图?没错,这就是最近热映的电影Captain America~ 下面这张图的效果就有些凶残了:

【浅墨的游戏编程Blog】毛星云(浅墨)的专栏 11万+

【C++实战项目】Date日期类 --- 运算符重载的深入探索

本文深入探讨了C++中自定义Date日期类如何运用运算符重载来增强类的功能和使用体验。通过重载输入输出运算符(``),我们实现了日期的便捷输入与格式化输出。同时,通过重载算术运算符(如`+`和`-`),我们为日期类增加了日期加减的直观操作,使日期计算更为简便。

深入解析C/C++编程技巧,带你探索高效开发之路 2418
上一篇: 【二】Linux常用命令及操作 【未完】
下一篇: springboot整合mycat连接数据库的注意事项和异常处理
zxwwantlearnjava
博客等级 码龄7年 16粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值