`
paddy.w
  • 浏览: 505164 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java实现循环移位

    博客分类:
  • Java
阅读更多
        做MD5算法时遇到了循环移位,在网上找了写资料,发现写的有漏洞。在此更正总结一下。

        0xD6485F0F要循环左移7位,正确答案:0x242F87EB。代码如下:
public class Test {

	public static void main(String[] args) {
		int a=0xD6485F0F;//转为2进制是32位
		//循环左移7位
		int temp=a<<7|a>>>(32-7);//这里注意右移用的是无符号右移
		System.out.println(Integer.toHexString(temp));//正确答案是0x242F87EB
	}
}


        这里的公式是:对于一个二进制有n位的数字循环左移(循环右移)m位,可以将此数字左移(无符号右移)m位的结果与此数字无符号右移(左移)n-m位的结果进行或操作
        网上答案的右移是有符号右移(>>),这里通过实验证明,正确应为无符号右移(>>>)。
分享到:
评论

相关推荐

    循环移位密码

    java实现循环移位密码 将明文中字字母数字用R位后的字母数字进行替换

    java实现大周期线性反馈移位寄存器

    在这个Java实现中,作者创建了一个名为`LFSR2_13`的类,它使用了一个13位的寄存器,并且具有一个周期为8001的大周期。类中有两个静态变量:`num`表示寄存器的长度,`start`保存了寄存器的初始状态。`k`变量在当前...

    java实现循环密码加密的凯撒算法归纳.pdf

    《Java实现循环密码加密的凯撒算法》 凯撒密码,又称移位密码,是一种古老的加密技术,其原理是将明文中的每个字符按照一个固定的偏移量进行替换,从而达到加密的目的。在Java中,我们可以利用编程技巧实现这一算法...

    java实现循环密码加密的凯撒算法借鉴.pdf

    Java 实现循环密码加密的凯撒算法借鉴 凯撒算法是一种简单而古老的加密算法,它...Java 实现循环密码加密的凯撒算法借鉴可以用于实现简单的加密和解密,但是需要根据实际情况选择合适的加密算法,以确保数据的安全。

    祖冲之密码算法Java实现

    1. **Java基本编程**:理解和掌握Java的基础语法,包括变量、条件语句、循环、数组和类等。 2. **位操作**:祖冲之算法涉及到大量的位操作,如位移、按位与、按位或、按位异或等,因此需要熟练使用Java的位运算符。...

    LeetCode题解(java语言实现).pdf

    * Rotate Array in Java:该题目要求将数组旋转一定的次数,实现方法使用了循环移位的方法。 * Evaluate Reverse Polish Notation:该题目要求对逆波兰表示法的字符串进行求值,实现方法使用了栈的数据结构。 * ...

    java实现CRC16校验功能

    在Java中实现CRC16校验功能可以帮助开发者确保数据的完整性和一致性,尤其在文件传输、网络通信或者存储系统中。CRC16的基本原理是通过一个固定长度的校验和来验证数据是否在传输或处理过程中发生了错误。 CRC16的...

    java 移位运算符的资源

    Java 移位运算符是编程语言中用于处理二进制位的...总的来说,Java的移位运算符是编程中不可或缺的工具,它们提供了对二进制位的直接控制,能够实现高效的位操作,这对于理解计算机底层机制和编写高性能代码至关重要。

    线性以及循环码编码Java实现

    在Java实现中,我们需要定义一个函数来生成生成矩阵,然后根据矩阵计算校验位,并将它们添加到原始数据中。此外,还需要编写解码函数,用于在接收到数据后检测并纠正错误。 接下来,我们转向循环码。循环码是一种...

    流密码 java实现

    在Java中,我们可以通过`BitSet`类来处理比特位,并用循环和位操作实现LFSR。 ```java public class LFSR { private BitSet register; private int feedback; public LFSR(int seed) { register = new BitSet...

    RCR16 java实现

    RCR16是一种数据校验算法,...以上就是RCR16校验算法的Java实现及其在Modbus通信中的应用。在处理这类问题时,确保理解和正确实现位操作是至关重要的,因为即使微小的错误也可能导致校验失败,从而影响通信的可靠性。

    EDA八位乘法的java实现

    在Java实现八位乘法的过程中,我们通常会使用循环和位运算来完成。Java提供了丰富的位操作符,如位与(&),位或(|),位异或(^),左移(),右移(&gt;&gt;), 无符号右移(&gt;&gt;&gt;), 位非(~)等。对于两个八位数的乘法,我们可以采用...

    用JAVA实现DES加密解密

    ### 使用JAVA实现DES加密解密的关键知识点 #### 1. DES算法概述 DES(Data Encryption Standard),即数据加密标准,是一种对称密钥算法,由IBM公司开发,并于1977年被美国国家标准局(ANSI)采纳为数据加密标准。...

    AES加密解密算法的Java实现.doc

    ### AES加密解密算法的Java实现 #### 一、引言 高级加密标准(Advanced Encryption Standard,简称AES)是一种对称加密算法,被广泛应用于数据安全领域。它是由比利时密码学家Joan Daemen和Vincent Rijmen设计,并...

    java实现桥牌赛制

    在这个Java Swing实现的桥牌赛制项目中,我们将关注以下知识点: 1. **Java Swing**: Java Swing提供了丰富的组件库,可以用来构建复杂的用户界面。在这里,开发者可能使用了JFrame、JPanel、JButton等组件来设计...

    【Java】循环移码和补码.zip

    "src"目录通常包含了Java源代码文件,这些文件可能包含了实现循环移码和补码操作的类和方法。".idea"目录则是IDE的配置信息,可能包含了项目设置、VCS集成等信息。"out"目录通常存放编译后的字节码文件以及运行时...

    java des算法 c 实现

    本篇将详细介绍Java JDK内置的DES算法以及如何用C语言实现它。 首先,DES算法基于Feistel结构,使用64位的数据块进行加密,其中包含56位的有效密钥。DES分为加密和解密两个过程,都是通过一系列的置换和循环操作来...

    java编写的两个modbus CRC16实现

    - 这些CRC16的Java实现可以用于验证Modbus通信中的数据完整性,防止因为传输错误导致的控制设备误动作。 - 在进行数据包的发送和接收时,可以利用这些类来计算和验证CRC,确保数据的正确性。 总之,`CRC16M.java`...

    基于Misty1算法的加密软件(JAVA)的实现(源代码+论文).zip

    《基于Misty1算法的加密软件JAVA实现》 在信息安全领域,加密技术是保障数据安全的重要手段。Misty1算法,作为一个高效的分组密码算法,因其设计独特、安全性高而备受关注。本资料主要探讨了如何使用JAVA语言来实现...

    数组循环移位操作实例

    接下来,`rightShift`函数是实现循环右移的核心。它接收三个参数:数组、数组长度和要移动的位数。首先,将要移动的位数对数组长度取模,以避免超出数组范围。然后,分别反转数组的前k位(从0到n-k-1)和后N-k位(从...

Global site tag (gtag.js) - Google Analytics