加密算法基础复习

1 原则:在计算机系统中,数值一律有补码来表示(存储). 所有的运算都以补码形式进行

2 补码:

    正数的补码是其本身。6的补码是:00000110

    负数的补码,通过对该数绝对值的补码按位取反,再对整个数加1,如-7,先计算7的补码为00000111,然后取反,得到11111000,然后再加1,得到1111001。

   

    例子,计算 5&-6的结果

   5的补码为00000101, -6的补码为11111010,

     00000101

  & 11111010

----------------------

      00000000

 

所以结果为0

3 左移 右移 无符号移动

 

   (1): 左移位运算符(<<)能将运算符左边的运算对象向左移动运算符右侧指定的位数(在低位补 0)。

             不分正负数,相当于是左乘以2的n次方

    (2):右移位运算符(>>)则将运算符左边的运算对象向右移动运算符右侧指定的位数

            若值为正,则在高位插入0;若值为负,则在高位插入1。

     (3):无符号移动 在执行运算时,>>>运算符的操作数高位补0

4 16进制与byte 数组之间的转换

	/**
	 * Transform the specified byte into a Hex String form.
	 */
	public static final String bytesToHexStr(
		byte[] bcd)
	{
		StringBuffer s = new StringBuffer(bcd.length * 2);

		for (int i = 0; i < bcd.length; i++)
		{
			s.append(bcdLookup[(bcd[i] >>> 4) & 0x0f]);
			s.append(bcdLookup[bcd[i] & 0x0f]);
		}

		return s.toString();
	}


	/**
	 * Transform the specified Hex String into a byte array.
	 */
	public static final byte[] hexStrToBytes(
		String	s)
	{
		byte[]	bytes;

		bytes = new byte[s.length() / 2];

		for (int i = 0; i < bytes.length; i++)
		{
			bytes[i] = (byte)Integer.parseInt(
					s.substring(2 * i, 2 * i + 2), 16);
		}

		return bytes;
	}

	private static final char[] bcdLookup =
	{
		'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'
	};

 

 

4 常用进制之间相互转换

 

   
  1. 十进制转成十六进制:       
  2.      
  3. Integer.toHexString(int i)       
  4.      
  5. 十进制转成八进制       
  6.      
  7. Integer.toOctalString(int i)       
  8.      
  9. 十进制转成二进制       
  10.      
  11. Integer.toBinaryString(int i)       
  12.      
  13. 十六进制转成十进制       
  14.      
  15. Integer.valueOf("FFFF",16).toString()       
  16.      
  17. 八进制转成十进制       
  18.      
  19. Integer.valueOf("876",8).toString()       
  20.      
  21. 二进制转十进制       
  22.      
  23. Integer.valueOf("0101",2).toString() 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值