java 怎么把一个字节 高低位互换啊?

比如 我想把 byte b='0'; 高低位互换要怎么做啊?给一个方法吧?

位运算啊
byte b='0';

int b1=b<<4&0xf0; //左移4位和 11110000与运算 低位变高位

int b2=b>>>4&0x0f;//右移4位和 00001111与运算 高位变低位
byte c=b1+b2; //高位低位相加得到高地位互换。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-08-04
// 待调换高四位和第四位的数据
byte i = 69;// 二进制表示 01000101

// 高四位
byte high4 = (byte) (i & 240) ; //240的二进制 11110000
// 低四位
byte low4 = (byte) (i & 15); // 15的二进制形式 00001111

System.out.println(high4>>4);
System.out.println(low4<<4);

byte j = (byte) ((low4<<4) + (high4>>4));

System.out.println(j);// 84的二进制形式 01010100

第2个回答  推荐于2018-02-27
阁下,一步一步来就是这样:
byte a=(byte)0xfe;
byte l=(byte)(a & 0xf);
byte h=(byte)( (a & 0xf0)>>4);
byte c = (byte)(l <<4 | h);

System.out.printf("l=%X, h=%X, c=%2X\r\n", l, h, 0xff& c);本回答被网友采纳
第3个回答  2015-06-10

你说的是long和double类型数据的高低位互换吧?!给你个思路吧,你自己再测下。

double a = 100D;
int tmp = (int)a;
a = a<<32;
a += tmp;

第4个回答  2015-07-30
public class test {

static byte bswap(byte a)
{
byte b = 0;
for(int i = 0; i < 8; ++i)
b |= ((a & (1 << i)) == 0 ? 0 : 1) << (7-i);
return b;
}

static void bprint(byte b)
{
for(int i = 7; i >= 0; --i)
System.out.print((b & (1 << i)) == 0 ? '0' : '1');
System.out.println();
}

public static void main(String[] args){
byte b = 0xF;
bprint(b);
b = bswap(b);
bprint(b);
}
}

java 怎么把一个字节 高低位互换啊?
byte c=b1+b2; \/\/高位低位相加得到高地位互换。

java 怎么把一个字节 高低位互换啊?
public class test { static byte bswap(byte a){ byte b = 0;for(int i = 0; i < 8; ++i)b |= ((a & (1 << i)) == 0 ? 0 : 1) << (7-i);return b;} static void bprint(byte b){ for(int i = 7; i >= 0; --i)System.out.print((b & (1 << i))...

java 16进制高低位转换问题
Integer a = -1;System.out.println(Integer.toHexString(a));Integer b = 0xff;System.out.println(b.intValue());} } 下面这个是在网上找到的,高低位转换:\/\/ Java读取后,顺序已经反了 int javaReadInt = ;\/\/ 将每个字节取出来 byte byte4 = (byte) (javaReadInt & 0xff);byte byt...

Java中如何将两个无符号的byte转换为一个有符号的short?
这个是可以进行转换和复原的,举例:short x = -32752;\/\/定义一个short byte high = (byte) (0x00FF & (x>>8));\/\/定义第一个byte byte low = (byte) (0x00FF & x);\/\/定义第二个byte System.out.println(high);\/\/打印第一个byte值 System.out.println(low);\/\/打印第二个byte值 ...

java的io读文件中,什么叫高低八位,什么叫高24位,求指点
一个字节(Byte)是8位(bit),其中的“8位”指的是8位2进制数。一个int类型的变量能存放4Byte,也就是能存放32bit二进制数,而一个32位二进制数中权值最大的24位就是高24位,举个十进制的例子:12345678,在这个八位数中1234就是高4位,5678就是低4位。如果有一个16位的二进制数:...

0xff&Integer.parseInt(c,16); 这个语句怎么理解啊?
Integer a = -1;System.out.println(Integer.toHexString(a));Integer b = 0xff;System.out.println(b.intValue());} } 下面这个是在网上找到的,高低位转换:\/\/ Java读取后,顺序已经反了 int javaReadInt = ;\/\/ 将每个字节取出来 byte byte4 = (byte) (javaReadInt & 0xff);byte ...

Big endian,little endian的字节高低问题
竟然变成另外一个数字了?是的,就是这种后果。因此,在你的C程序传给JAVA程序之前有必要进行字节序的转换工作。无独有偶,所有网络协议也都是采用big endian的方式来传输数据的。所以有时我们也会把big endian方式称之为网络字节序。当两台采用不同字节序的主机通信时,在发送数据之前都必须经过字节序...

汇编语言:编写一个程序,显示AL寄存器中的两位十六进制数
;disp_al子程序将寄存器AL中的数值以十六进制显示出来disp_al: mov dh, al mov bx, 2 ;bx用于循环,一个字节最多可以显示成两个字符,所以循环次数是2次 mov cl, 4 ;首先显示高4位,在下次循环进再显示低4位 shr al, clagain: and al, 0fh cmp al, 9 ja hex add al, '0' ;如果小于9,加上字符...

DS18B20读程序和写程序有何不同?为何读程序或上0X80,写程序却与上0X01...
controlRegisterValue |= 0x80; \/\/ 将最高位设置为1,表示进行读取操作 对于写程序,需要将控制寄存器的最低位(LSB)设置为1,以表示将进行写操作。因此,在Java或其他编程语言中,可以将控制寄存器的最低位与0x01(或者二进制中的00000001)进行按位或运算,例如:byte controlRegisterValue = 0x00;...

如何学好java语言啊?
建议二:学习Java不要先看书学,一定要先把一块的知识点学完一遍,并且自己多多少少会动手操作,然后去看书温习。还有不要盲目的看视频,很多人都是光看视频,然后在心里没有一个操作的概念,这样的学习方法最后一定会浪费时间到放弃,所以学习Java之前一定要知道这些东西,这都是走过来的人以前走的弯路...

相似回答