考虑十进制数字10093264
。我想将此数字转换为3字节的二进制数,并将每个字节的值显示为十进制。即我想将上述数字改写为:
154 2 208
那么,实现这一目标的可能方法是什么?
我当时在想DEC2BIN
给我二进制数字。但这是问题所在:此功能仅允许输入最多8位!我的数学不是最好的,所以也许。可以帮助我:我需要除以什么?
例如,我意识到QUOTIENT(10093264;2^16)
给出了154
,这就是我的LSB。但是我不能使用相同的方法给我其他字节。
答案 0 :(得分:2)
使用BITAND
(按位与)和整数除法或BITRSHIFT
(按位右移)
因此,最小的字节(208
)仅为=BITAND(10093264,255)
-这将为您提供最后8位:
100110100000001011010000 : 10093264
& 000000000000000011111111 : 255
= 000000000000000011010000 : 208
对于下一个最小字节(2
),可以从整数除法(INT(10093264/256)
)或BITRSHIFT
(BITRSHIFT(10093264, 8)
)开始,然后使用{{1} },再次:
BITAND
然后,对下一个字节再次执行相同操作: 100110100000001011010000 : 10093264
→ 000000001001101000000010 : 39426
& 000000000000000011111111 : 255
= 000000000000000000000010 : 2
除以16(2个字节)或除以65536(即BITRSHIFT
)
POWER(256,2)
如果要在1个单元格中全部完成操作(并且拥有 100110100000001011010000 : 10093264
→ 000000000000000010011010 : 208
& 000000000000000011111111 : 255
= 000000000000000010011010 : 208
函数的Office 365),则可以使用此数组公式。它使用TEXTJOIN
算出有多少字节,并输出带空格的
LOG
(作为数组公式,插入时需要使用 Ctrl + Shift + Enter )
答案 1 :(得分:1)
功能
=ROUNDDOWN(10093264/2^16,0) & " " & ROUNDDOWN(MOD(10093264,2^16)/2^8,0) & " " & ROUNDDOWN(MOD(MOD(10093264,2^16),2^8),0)