~:含义及用法举例
文章目录
- 前言
- 一、“~”是什么?
-
二、原码、反码及补码
- 1.简介
-
2.用法举例
- ①正整数
- ②负整数
- ③零
-
三、“~”操作符
- 1.简介
-
2.用法举例
- ①正整数
- ②负整数
- ③零
-
前言
本文在简单介绍原码反码补码的基础上,介绍“~”操作符的用法。
一、“~”是什么?
~:一种单目操作符,即对一个数的二进制按位取反。
二、原码、反码及补码
1.简介
一个整数的二进制表示有3种:原码、反码及补码。
最高位为符号位,0为正,1为负。
整数在内存中存储的是补码。
2.用法举例
①正整数
原码、反码、补码相同。
例如
1:
00000000 00000000 00000000 00000001(原码)
00000000 00000000 00000000 00000001(反码)
00000000 00000000 00000000 00000001(补码)
②负整数
原码 --------------------------------------------> 反码 --------------------------------------------> 补码
(符号位不变,其他位按位取反) (加一)
原码 <-------------------------------------------- 反码 <-------------------------------------------- 补码
(符号位不变,其他位按位取反) (减一)
例如
-1:
10000000 00000000 00000000 00000001(原码)
11111111 11111111 11111111 11111110(反码)
11111111 11111111 11111111 11111111(补码)
③零
这里要分为“正零”与“负零”讨论。
正零(可以参展①正整数的取法):
00000000 00000000 00000000 00000000(原码)
00000000 00000000 00000000 00000000(反码)
00000000 00000000 00000000 00000000(补码)
负零(可以参展②负整数的取法):
10000000 00000000 00000000 00000000(原码)
11111111 11111111 11111111 11111111(反码)
00000000 00000000 00000000 00000000(补码)
三、“~”操作符
1.简介
按(二进制)位取反,即把所有二进制位(包括符号位)中数字,1变成0,0变成1。
2.用法举例
由于整数在内存中存储的是补码,故使用"~"(按位取反)时需要转化为补码进行运算。此时,得到的结果仍为补码,需要进一步转化为原码,得到最终输出值。
①正整数
例如
1:
00000000 00000000 00000000 00000001(补码)
~1:
11111111 11111111 11111111 11111110(补码)
11111111 11111111 11111111 11111101(反码)
10000000 00000000 00000000 00000010(原码)
即~1的输出结果为-2
代码如下:
#include <stdio.h>
int main()
{
int a = 1;
printf("%d\n", ~a);
return 0;
}
输出结果:-2
②负整数
例如
-1:
11111111 11111111 11111111 11111111(补码)
~-1:
00000000 00000000 00000000 00000000(补码)
00000000 00000000 00000000 00000000(反码)
00000000 00000000 00000000 00000000(原码)
即~-1的输出结果为0
代码如下:
#include <stdio.h>
int main()
{
int a = -1;
printf("%d\n", ~a);
return 0;
}
输出结果:0
③零
由于正零与负零的补码相同,故不加以区分。
0:
00000000 00000000 00000000 00000000(补码)
~0:
11111111 11111111 11111111 11111111(补码)
11111111 11111111 11111111 11111110(反码)
10000000 00000000 00000000 00000001(原码)
即~0的输出结果为-1
代码如下:
#include <stdio.h>
int main()
{
int a = 0;
printf("%d\n", ~a);
return 0;
}
输出结果:-1
总结
以上就是关于“~”的详解,涉及原码、反码及补码仅简单介绍,相关内容可参考计算机组成原理。文章来源:https://www.toymoban.com/news/detail-693225.html
希望可以帮助大家,如有错误,望指出,谢谢!文章来源地址https://www.toymoban.com/news/detail-693225.html
到了这里,关于C语言:“~”操作符详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!