如何对一个变量进行按位取反?
我正在做一个计算器,想让它把按位取反作为一个函数实现。该怎么做?
以下是代码:
my $val1 = <STDIN>;
print ~$val1, "\n";
如果我输入 5,它会输出 "��"。
解决方案
对数字进行按位取反
5 ⇒ 18446744073709551610[1]
| Perl版本 | Pragma | 表达式 |
|---|---|---|
| 任意 | ~$val[2] |
|
| 任意 | ~( 0 + $val) |
|
| 5.22+ | use experimental qw( bitwise );[3] |
~$val |
| 5.28+ | use feature qw( bitwise ); |
~$val |
| 5.28+ | use v5.28; |
~$val |
- 假设构建使用64位整数。
$val必须在内部以数字形式存储(而不是字符串)。- 虽然当时是实验性质,但在这些较旧的版本中也可以安全使用。
对字符串的每个字节进行按位取反
"\x05\x06" ⇒ "\xFA\xF9"
| Perl版本 | Pragma | 表达式 |
|---|---|---|
| 任意 | ~$val[1] |
|
| 任意 | ~"$val" |
|
| 5.22+ | use experimental qw( bitwise );[2] |
~.$val |
| 5.28+ | use feature qw( bitwise ); |
~.$val |
| 5.28+ | use v5.28; |
~.$val |
$val必须在内部以字节串形式存储。- 虽然当时是实验性质,但在这些较旧的版本中也可以安全使用。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。