- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 16 位寄存器,其中包含 LSB 和 MSB 中的一些值:
最低有效位:
位 0...1 处的值为 0
位 2 的值为 0
MBS:
在 MSB 我需要写入值 20
所以应该写入寄存器的值为0 + 0 + 20 = 160
当我阅读注册时,我正在这样做:
对于位 [0...1] 中的第一个值:
firstVal = (valFromReg & (((1 << 2)-1) << 1) / 2)
secondVal = (valFromReg & 4) / 4
但是如何读取/转换第三个值以获得数字 20?
最佳答案
在 Java 中,short
是一个(带符号的)16 位值。您想将其分成 3 个值:
a
是位0-1中的2位值b
是第2位中的1位值c
是第3-15位中的13位值按位计算,可以这样表示:cccc cccc cccc cbaa
要从 16 位 reg
值中提取 3 个值,您需要执行以下操作:
short reg = /*register value*/;
int a = reg & 0x0003;
int b = (reg >> 2) & 0x0001;
int c = (reg >> 3) & 0x1fff;
要走另一条路,你可以这样做:
short reg = (short)((c << 3) | (b << 2) | a);
这当然假设这些值在值范围内,即 a = 0-3、b = 0-1 和 c = 0-8191。
关于java - 从 16 位寄存器的 MSB 获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38540644/
我希望将 LSB、MSB 的字节数组转换为 int 的数组 目前,我正在使用 for 循环并单独转换每组值, void ConvertToInt(int OutArray[], byte InArra
我想分配一个 std_logic_vector 而不给出界限。像这样: constant xy: std_logic_vector := "100111"; 当我想访问单个位时: xy(0), xy(
我检查了用于反转位顺序的 SWAR 算法(SIMD W在 A Rregister 中) unsigned int 的。 signed int 有类似的东西吗? 最佳答案 该算法仅适用于无符号整数,因为
当我使用下面的代码更改 32 位时,或者当 bitc 等于 31 时,它给出 -2147483643。 它似乎将所有 0 更改为 1,而不是仅将最后一个 0 更改。我怎样才能在代码中解决这个问题?预先
对于给定的数字 unsigned int a = 1203; 仅对上述示例增加最重要的小数位 a = 2203; 如何实现? 我是这样开始的 for (n=a; n; n/=10){ b = n%10
以unsigned char为例。 它的范围是0 到 255。 如果我尝试在其中存储 256,将发生以下情况:- 256 的二进制文件 100000000 由于它由9位组成,因此MSB 1将被丢弃,它
我正在通过将位打包到一个 uint 数组中来实现一个位向量。 getBit(index)函数执行 (array[cell] & (1 > bit获取是否已设置位。这适用于除 MSB 之外的所有位。它不
我想知道一个字节的第一位是什么值。 例如: 我有 byte m = (byte) 0x8C; 我怎么知道第一位是 1 还是 0? 谁能帮帮我? 最佳答案 这取决于你所说的“第一位”是什么意思。如果您的
我需要将十六进制字符串中的 MSB 和其余位分开。例如:我有一个十六进制字符串 a2,相当于 1010 0010。我想分离出 MSB(在本例中为 1),其余数字转换为十进制。我想我可以做这样的事情:
我有一个 20 个字/字节的数组,存储一个 160 位数。如何找到从 msb 开始的第一个非零位。我需要找到位的位置,然后相应地从第一个'1'位置开始我需要做一些操作。 最佳答案 如果您使用的是 gc
我有一个函数返回 1 Byte uint8_t fun(); 该函数应该运行 9 次,所以我得到 9 字节 我想将最后一个 8 作为 4 short values 这里我所做的,但是我'我不确定我得到
我正在努力转换在特定微 Controller 上运行的程序,并使其适应在树莓派上运行。我已经成功地从我一直在使用的传感器中提取值,但现在我遇到了一个问题,我认为这是由我无法理解的几行代码引起的。我已经
所以我想切换我数字的最高有效位。这是一个例子: x = 100101 then answer should be 00101 我有一台 64 位机器,因此我不希望答案是 100000....10010
给定一个 len 类型的 signed short 元素数组,它是在数组中的最大绝对值元素中找到设置的最高有效位的位置。例如,如果数组 L 包含 {-134, 123, 0, -890} 那么 f(L
在中断子程序(每 5 µs 调用一次)中,我需要检查一个字节的 MSB 并将其复制到该字节的其余部分。 我需要做类似的事情: if(MSB == 1){byte = 0b11111111} else{
我正在交叉编译 MIPS 处理器(little-endian arch)的开源库 oRTP。我的开发系统是i386 linux。我将配置脚本运行为 ./configure --host=mips-li
在两个有符号整数的二进制加法中,如果进出 MSB 列的进位不匹配,则会出现有符号溢出。 这条规则背后的逻辑是什么?为什么进位和执行应该匹配才能得到正确的结果。请解释一下。 最佳答案 显然有两种不匹配的
我有一个二进制协议(protocol),它将每个有效负载字节的 MSB 提取到 MSB 集合字节(七进制)中进行传输,并在接收器端重新注入(inject) MSB。有效负载由 n 个四字节帧组成,具体
我有以下代码用于从非负整数获取 MSB(最高有效位),更具体地说是 Int32: private static readonly int[] powersOf2 = new int[]
我以 2 字节短值的十六进制值形式获取数据,但交换值后丢失了。 signed short value = 0x0040; value = (value*0.5) - 40; convertMSB
我是一名优秀的程序员,十分优秀!