“~ (按位取反)”的版本间的差异
(Created page with "*'''Bitwise AND (&), Bitwise OR (|), Bitwise XOR (^)''' 按位与(&) 按位操作符对变量进行位级别的计算。它们能解决很多常见的编程问题。下...") |
|||
第1行: | 第1行: | ||
− | *''' | + | *'''按位取反 (~)''' |
− | + | 按位取反在C+ +语言中是波浪号~。与&(按位与)和|(按位或)不同,按位取反使用在一个操作数的右侧。按位取反将操作数改变为它的“反面”:0变为1,1变成0。例如: | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<pre style="color:green"> | <pre style="color:green"> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | 0 1 operand1 | |
− | |||
− | |||
− | |||
---------- | ---------- | ||
− | 0 | + | 1 0 ~ operand1 |
− | + | int a = 103; // 二进制: 0000000001100111 | |
− | + | int b = ~a; // 二进制: 1111111110011000 = -104 | |
− | int a = | ||
− | int b = | ||
− | |||
</pre> | </pre> | ||
− | + | 你可能会惊讶地看到结果为像-104这样的数字。这是因为整数型变量的最高位,即所谓的符号位。 | |
− | + | 如果最高位是1,这个数字将变为负数。这个正数和负数的编码被称为补。 | |
− | + | 顺便说一句,有趣的是,要注意对于任何整数型操作数X,〜X和-X-1是相同的。 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | - | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | 有时,对带有符号的整数型操作数进行位操作可以造成一些不必要的意外。 | ||
[[https://www.microduino.cn/wiki/index.php/Arduino_%E8%AF%AD%E6%B3%95%E6%89%8B%E5%86%8C/zh 返回Arduino语法手册]] | [[https://www.microduino.cn/wiki/index.php/Arduino_%E8%AF%AD%E6%B3%95%E6%89%8B%E5%86%8C/zh 返回Arduino语法手册]] |
2016年3月28日 (一) 09:25的最新版本
- 按位取反 (~)
按位取反在C+ +语言中是波浪号~。与&(按位与)和|(按位或)不同,按位取反使用在一个操作数的右侧。按位取反将操作数改变为它的“反面”:0变为1,1变成0。例如:
0 1 operand1 ---------- 1 0 ~ operand1 int a = 103; // 二进制: 0000000001100111 int b = ~a; // 二进制: 1111111110011000 = -104
你可能会惊讶地看到结果为像-104这样的数字。这是因为整数型变量的最高位,即所谓的符号位。
如果最高位是1,这个数字将变为负数。这个正数和负数的编码被称为补。
顺便说一句,有趣的是,要注意对于任何整数型操作数X,〜X和-X-1是相同的。
有时,对带有符号的整数型操作数进行位操作可以造成一些不必要的意外。