关于与运算和取余之间的关系

2024-05-04 00:38
文章标签 关系 运算 之间 取余

本文主要是介绍关于与运算和取余之间的关系,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一个数和3进行与运算,就是对4取余.
解释:
    和3进行与运算,是取该数2进制形式的最后2位的值,因为3的二进制形式是(假设该数用1个字节表示,多个字节也一样,这里为了讲述,暂举1个字节为例)00000011,最后两位和1进行与,则把该数最后2位的状态取出来(和1与的特性,不理解的话复习数字逻辑基础).如下推导:
随便举一个数255,其二进制形式是11111111,根据十进制和二进制之间的转换公式,有:
255 = 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1
对其两边进行同时对4取余运算,即
255%4 = 128%4  +  64%4  +  32%4  +  16%4  +  8%4  +  4%4  +  2%4  +  1%4
        (第8位)  (第7位)  (第6位)  (第5位) (第4位) (第3位) (第2位) (第1位)
可见第4至第8位得到的结果都会是0,只有低3位待定,而这低3位中,低2位不论怎样对4取余都是其原来的值,因为他们肯定比4小,而第3位正好是二进制中表示十进制的4所在的位,十进制数对4取余取得的是最后剩下比4小的那一部分,那么也就是说某个数对4取余取得的就是这个数二进制形式的低2位,那么我们只要获得该数低2位值即可,那么按照数字逻辑中讲述的与运算的特性,我们只要用该数和3即00000011进行与运算即可


推理:明白如上道理,那么同理1个数和5进行与运算就是对6取余,和7进行与运算就是对8取余,依次类推
但此种规律只适合对偶数取余,对奇数取余,如3,是要取得剩下的比3小的数,比3小的数在二进制形式上也是在低2位,但是低2位又能表示3,所以对3取余就不能简单地对低2位进行与操作.其他奇数也是如此.

这篇关于关于与运算和取余之间的关系的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/957994

相关文章

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

Java中数组与栈和堆之间的关系说明

《Java中数组与栈和堆之间的关系说明》文章讲解了Java数组的初始化方式、内存存储机制、引用传递特性及遍历、排序、拷贝技巧,强调引用数据类型方法调用时形参可能修改实参,但需注意引用指向单一对象的特性... 目录Java中数组与栈和堆的关系遍历数组接下来是一些编程小技巧总结Java中数组与栈和堆的关系关于

在Java中实现线程之间的数据共享的几种方式总结

《在Java中实现线程之间的数据共享的几种方式总结》在Java中实现线程间数据共享是并发编程的核心需求,但需要谨慎处理同步问题以避免竞态条件,本文通过代码示例给大家介绍了几种主要实现方式及其最佳实践,... 目录1. 共享变量与同步机制2. 轻量级通信机制3. 线程安全容器4. 线程局部变量(ThreadL

Javaee多线程之进程和线程之间的区别和联系(最新整理)

《Javaee多线程之进程和线程之间的区别和联系(最新整理)》进程是资源分配单位,线程是调度执行单位,共享资源更高效,创建线程五种方式:继承Thread、Runnable接口、匿名类、lambda,r... 目录进程和线程进程线程进程和线程的区别创建线程的五种写法继承Thread,重写run实现Runnab

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

java中新生代和老生代的关系说明

《java中新生代和老生代的关系说明》:本文主要介绍java中新生代和老生代的关系说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、内存区域划分新生代老年代二、对象生命周期与晋升流程三、新生代与老年代的协作机制1. 跨代引用处理2. 动态年龄判定3. 空间分

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

java Long 与long之间的转换流程

《javaLong与long之间的转换流程》Long类提供了一些方法,用于在long和其他数据类型(如String)之间进行转换,本文将详细介绍如何在Java中实现Long和long之间的转换,感... 目录概述流程步骤1:将long转换为Long对象步骤2:将Longhttp://www.cppcns.c

C/C++中OpenCV 矩阵运算的实现

《C/C++中OpenCV矩阵运算的实现》本文主要介绍了C/C++中OpenCV矩阵运算的实现,包括基本算术运算(标量与矩阵)、矩阵乘法、转置、逆矩阵、行列式、迹、范数等操作,感兴趣的可以了解一下... 目录矩阵的创建与初始化创建矩阵访问矩阵元素基本的算术运算 ➕➖✖️➗矩阵与标量运算矩阵与矩阵运算 (逐元

Python位移操作和位运算的实现示例

《Python位移操作和位运算的实现示例》本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 位移操作1.1 左移操作 (<<)1.2 右移操作 (>>)注意事项:2. 位运算2.1