java 简单的位运算

图片说明

用位运算将int i=0xaabbccdd 变成 i=0xddccbbaa,我不知道自己写的代码哪里错了,希望各位可以指出,谢谢

a1错了,应该是左移6位,即 <<64

a3也错了,应该是左移2位,即 <<4

这是用c++编写的,最简单的程序。记得负数右移,补的是符号位。图片

t = (t1<<24)|(t2<<16)|(t3<<8)|t4
没有调试,但是思路就是这样

先将byte装换成int时位扩展的高位1用&0xff变成0,再进行移位操作,
或者使用& 0xff00、& 0xff0000,对0xff也进行相应的位操作之后的再运算,
代码如下:

 package com.ice_qi;

public class Move {

    public static void main(String[] args) {
        int i = 0xaabbccdd;

        byte b1 = (byte)0xdd;   
        byte b2 = (byte)0xcc;
        byte b3 = (byte)0xbb;
        byte b4 = (byte)0xaa;

        i = (b1 & 0xff)<<24 | 
                (b2 & 0xff)<<16 | 
                (b3 & 0xff)<<8 | 
                (b4 & 0xff)<<0;

        System.out.format("%x",i);  
    }
}