我有这个方法:
public static void dumpParameters(byte b) { System.out.println("Parameters: " + Integer.toHexString(b)); System.out.println("Param 1: " + ((b & 0x01) >> 0)); System.out.println("Param 2: " + ((b & 0x02) >> 1)); System.out.println("Param 3: " + ((b & 0x0c) >> 2)); System.out.println("Param 4: " + ((b & 0xf0) >> 4)); }
我试着用这个方法颠倒过来:
public static byte setParameters(int b1, int b2, int b3, int b4) { byte result = (byte) b1; result |= (b2 | 0x02) << 1; result |= (b3 | 0x0c) << 2; result |= (b4 | 0xf0) << 4; return result; }
这样调用这些方法:
dumpParameters((byte) 0xb2); byte result = setParameters(0, 1, 0, 11); dumpParameters(result);
结果:
Parameters: ffffffb2 Param 1: 0 Param 2: 1 Param 3: 0 Param 4: 11 Parameters: ffffffb6 Param 1: 0 Param 2: 1 Param 3: 1 Param 4: 11
我感兴趣的结果最终得到的值为FFFFFFB6;我需要FFFFFFB2。
setParameters方法不起作用,为什么?
这是我想你要得到的代码:
public static byte setParameters(int b1, int b2, int b3, int b4) {
byte result = (byte) b1;
result |= (b2 & 0x01) << 1;
result |= (b3 & 0x03) << 2;
result |= (b4 & 0x0f) << 4;
return result;
}
按位或将完全破坏参数,只需将其移位,然后取所需的位:
public static byte setParameters(int b1, int b2, int b3, int b4) {
byte result = (byte) b1;
result |= (b2 << 1) & 0x02;
result |= (b3 << 2) & 0x0c;
result |= (b4 << 4) & 0xf0;
return result;
}
1E 1B 01 13 6 [ 0001 1110 0001 1011 0000 0001 0001 0011 0110 ]通过进行筛选和加成转换为F6C336。(0x1E 现在,我不得不逆转这一计算。即从F6C336,我想得到1E 1B 01 13 6。 很抱歉我在位操作方面的知识很差。
代码: 我想在不使用任何循环的情况下反转一个数字,我包括了到目前为止的步骤,但我不确定它是否正确: 将int与输出一起声明为num1、num2和num3,反向 这些步骤正确吗?我试着使用这个程序,但没有任何运气,直到我得到正确的步骤。 例子: 数字总是3位数,没有任何变化
我目前正在学习位操作,我的任务是做一个左旋转的4位整数。 我的4位左旋转代码是 我想做一个4位循环移位,以保持作为一个4位后旋转,但似乎不能理解它是如何工作的。 例如:10(1010)左旋转1位后给出5(0101),但它给出的值是21,比我的4位多。 任何能让我理解这个问题的帮助都将不胜感激!
问题内容: 给定一个十进制整数(例如65),如何反转Python中的基础位?即。以下操作: 看来该任务可以分为三个步骤: 将十进制整数转换为二进制表示形式 反转位 转换回十进制 步骤#2和3似乎很简单(这个相关的步骤#2 SO问题),但我卡在步骤#1。步骤#1的问题是使用填充零来检索完整的十进制表示形式(即65 = 01000001,而不是1000001)。 我到处搜寻,但似乎找不到任何东西。 问
本文向大家介绍java<<、>>、>>>移位操作方法,包括了java<<、>>、>>>移位操作方法的使用技巧和注意事项,需要的朋友参考一下 <<,有符号左移位,将运算数的二进制整体左移指定位数,低位用0补齐。 以上是正整数,运算结果如下。 接下来看看将负数进行左移2位操作是什么情况,运算结果如下。 为什么会-10的二进制会出现这么多的1呢?仔细数一下刚好有32位。首先需要了解的是Java负数存储是
我必须编写一个函数,对y位置的位进行左循环移位。例如,如果我将:01011000和2作为y,则函数必须返回011000001。 我已经尝试使用但它似乎是无用的。