第 N 位到位图转换
Nth Bit to BitMap Conversion
我正在从这里读取第 N 位到位图的转换 BitMaps
我想了解他们如何将第 n 位(0-9 范围内的整数)映射到位图(0 和 1),下面是从那里复制的代码:
0________10________20________30________40________50________60__64
1234567890123456789012345678901234567890123456789012345678901234 n-th bit
0100001000010000000000000001000100000010110000000100100000000100 bit map
此外,他们正在转换 '82x is binary '1000 0010' ,但是当我计算出 82 的二进制时,它会变成 1010010.
任何帮助将不胜感激。
谢谢,
阿比特
在您的示例中,82x 是一个十六进制值。
82十六进制的二进制值为1000 0010
好的,暂时忽略第n位数据。假设示例只有位图。
0100001000010000000000000001000100000010110000000100100000000100
从位图中可以看出第一个字段不在消息中(因为位图中的第一个位是0),而第二个字段存在于消息中(因为第二个位是1),等等。假设你想知道第 56 个字段是否在消息中,你必须计算位图中的位,直到你到达第 56 位,然后查看它是 0 还是 1。
如果他们还显示了位图中位的位置,那么这个例子会更容易理解,这样你就不必计算位了。报文中的第n位数据就是给你算的。让我们先看看前 9 个第 n 个值。
123456789
0100001000010000000000000001000100000010110000000100100000000100
如您所见,第 n 位数据仅计算前 9 位。你可以很容易地看到第 6 位是 0,第 7 位是 1,不计算位。那么第10位呢
示例无法像这样显示第 10 位
12345678910
0100001000010000000000000001000100000010110000000100100000000100
因为10是两位数,位图中第10位和第11位都在上面。解决这个问题,可以这样竖写10
1
1234567890
0100001000010000000000000001000100000010110000000100100000000100
并把例子写成
0000000001111111111222222222233333333334444444444555555555566666 n-th
1234567890123456789012345678901234567890123456789012345678901234 bit
0100001000010000000000000001000100000010110000000100100000000100 bit map
有些人会这样写
0 1 2 3 4 5 6 n-th
1234567890123456789012345678901234567890123456789012345678901234 bit
0100001000010000000000000001000100000010110000000100100000000100 bit map
你给出的例子,第 n 位信息的方式略有不同,但意思是一样的。
现在,回答你问题的第二部分,为什么 82x 转换为 100000010? 82 是以 16 为基数而不是以 10 为基数。
我正在从这里读取第 N 位到位图的转换 BitMaps
我想了解他们如何将第 n 位(0-9 范围内的整数)映射到位图(0 和 1),下面是从那里复制的代码:
0________10________20________30________40________50________60__64
1234567890123456789012345678901234567890123456789012345678901234 n-th bit
0100001000010000000000000001000100000010110000000100100000000100 bit map
此外,他们正在转换 '82x is binary '1000 0010' ,但是当我计算出 82 的二进制时,它会变成 1010010.
任何帮助将不胜感激。
谢谢, 阿比特
在您的示例中,82x 是一个十六进制值。 82十六进制的二进制值为1000 0010
好的,暂时忽略第n位数据。假设示例只有位图。
0100001000010000000000000001000100000010110000000100100000000100
从位图中可以看出第一个字段不在消息中(因为位图中的第一个位是0),而第二个字段存在于消息中(因为第二个位是1),等等。假设你想知道第 56 个字段是否在消息中,你必须计算位图中的位,直到你到达第 56 位,然后查看它是 0 还是 1。
如果他们还显示了位图中位的位置,那么这个例子会更容易理解,这样你就不必计算位了。报文中的第n位数据就是给你算的。让我们先看看前 9 个第 n 个值。
123456789
0100001000010000000000000001000100000010110000000100100000000100
如您所见,第 n 位数据仅计算前 9 位。你可以很容易地看到第 6 位是 0,第 7 位是 1,不计算位。那么第10位呢
示例无法像这样显示第 10 位
12345678910
0100001000010000000000000001000100000010110000000100100000000100
因为10是两位数,位图中第10位和第11位都在上面。解决这个问题,可以这样竖写10
1
1234567890
0100001000010000000000000001000100000010110000000100100000000100
并把例子写成
0000000001111111111222222222233333333334444444444555555555566666 n-th
1234567890123456789012345678901234567890123456789012345678901234 bit
0100001000010000000000000001000100000010110000000100100000000100 bit map
有些人会这样写
0 1 2 3 4 5 6 n-th
1234567890123456789012345678901234567890123456789012345678901234 bit
0100001000010000000000000001000100000010110000000100100000000100 bit map
你给出的例子,第 n 位信息的方式略有不同,但意思是一样的。
现在,回答你问题的第二部分,为什么 82x 转换为 100000010? 82 是以 16 为基数而不是以 10 为基数。