简单的事情,如何打印二进制数并将其转移到左侧?
$num = 0b00000010001;
for(0..6){
print sprintf ("%b",$num), "\n";
$num<<1;
}
Run Code Online (Sandbox Code Playgroud)
这段代码的问题:它不会在1之前打印0!打印的重新打印只是"10001",它不会改变数字.
最终的输出应该是:
00000010001
00000100010
00001000100
00010001000
00100010000
01000100000
10001000000
Run Code Online (Sandbox Code Playgroud)
rai*_*7ow 10
只需告诉格式化程序在任何情况下都需要准确打印N(11)位数,并且0应该用作填充符号:
my $num = 0b00000010001;
for (0..6) {
printf("%011b\n", $num);
$num <<= 1;
}
Run Code Online (Sandbox Code Playgroud)
演示.
这里有两个旁注
首先,它显然是多余的print sprintf:printf将很好地替换它.
其次,在原始代码中,您忘记将转移的结果分配给$num.如果你用use warningspragma 开始你的脚本(比如在我的演示中),你会收到通知Useless use of left bitshift (<<) in void context...
| 归档时间: |
|
| 查看次数: |
455 次 |
| 最近记录: |