简单的事情是,如何打印一个二进制数字并将其移到左边?
$num = 0b00000010001;
for(0..6){
print sprintf ("%b",$num), "\n";
$num<<1;
}这个代码的问题:它没有在1之前打印0!印刷品的数量仅为"10001",不会改变数字。
最后的产出应是:
00000010001
00000100010
00001000100
00010001000
00100010000
01000100000
10001000000发布于 2014-03-31 15:25:59
只需告诉格式化程序,在任何情况下都需要精确地打印N (11)位数字,0应该用作填充符号:
my $num = 0b00000010001;
for (0..6) {
printf("%011b\n", $num);
$num <<= 1;
}Demo。
这里有两个侧面
print sprintf显然是多余的:printf将很好地取代它。$num。如果您使用use warnings实用程序启动脚本(如我的演示中所示),您就会被Useless use of left bitshift (<<) in void context...告知https://stackoverflow.com/questions/22765579
复制相似问题