如何使用 Perl 在文件中打印最低有效的 4 位有符号整数?

How to print least significant 4 bits of signed integer in a file using Perl?

例如:

我有$a= -1。如果我使用 printf%.4b%b 打印它,它会给我 32-bit 全 1。

但是,我只想打印二进制文件中的最低有效 4 位,如 1111。 有什么想法吗?

谢谢

-1在二进制中是用2s的补码表示的,所以所有的1。 (查看更多:What is “2's Complement”?

如果你想'limit'它,那么你可以这样做的方法是按位and

开启 4 位是

1+2+4+8 = 15. 

因此:

use strict;
use warnings;

my $val = -1;

printf ( "%b", $val & 15 );

%.4b 指小数位,%04b 格式至少为 4 位,根据需要填充前导 0

为了迎合负整数,取模 16 ( 2^<number of least significant bits> )。

my @b  = (12, 59, -1, 1 ); # sample of integers
@b = map { $_ % 16; } @b;  # take modulus
printf ("4-bits: %04b" . (", %04b" x $#b) . ";\n", @b );
                           # output with computed number of placeholders