c语言的按位取反运算符
按位取反运算符 ~: 一元运算符,对应的二进制位,0变为1,1变为0。
分析:
由于负数的原码,补码,反码不同
因此将要进行计算:
补码—>反码—>原码
原码—>反码—>补码
原码二进制位全部将将1变为0,0变为1,得到反码
反码+1得到补码(反码加的1位最右位的1)
例如:
正数:
Int a=15
设a=15为a1
此时a1的原码为:0……0,0……0,0……0,00001111
因为a1为正数(正数的补码,反码,原码相同),因此进行取反运算:
设~a为a2,
因此得:a2的原码为:1……1,1……1,1……1,11110000
所以a2的反码为:1……0,0……0,0……0,00001111
补码=反码+1:所以a2的补码:1……0,0……0,0……0,00010000(二进制逢二进一)
所以a2=-16
负数:
在使用~计算负数时,由于在计算机中,负数的补码,反码,原码不同,因此首先将操作数的值计算为补码,再进行取反运算;
Int a=-15;(a=-15为原码);(在计算机中负数以补码的形式存在)
此时,首先进行从原码到补码的计算:
原码为-151:……1,1……1,1……1,00001111
反码:1……1,1……1,1……1,11110000(将原码换算为反码:将原码的值取相反数,1变0,0变1)
补码:补码=反码+1:1……1,1……1,1……1,11110001
此时进行取反运算(包括符号位也要变):0……0,0……0,0……0,00001110:14
所以
~a=14;
取反运算符公式:
n=-(n+1)
时刻牢记计算机中二进制以补码的形式存在
c语言的按位取反运算符相关推荐
- C语言中八进制和16进制怎么表示,原码,反码及补码,C语言按位取反运算符~
借鉴被人的 C语言中8进制和16进制怎么表示 C语言本身支持的三种输入是: 1. 十进制.比如20,457: 2. 十六进制,以0x开头.比如0x7a: 3. 八进制,以0开头.比如05,0237 所 ...
- c语言的44种运算符,C语言重要知识点总结【9】:C语言运算符(详解)
目录 一.前言 二.运算符分类 三.运算符的优先级 四.常用运算符 1. 算术运算符 2. 关系运算符 3. 逻辑运算符 4. 赋值运算符 5. 条件运算符 6. 逗号运算符 7. 强制类型转换运算符 ...
- 位运算符之---按位取反运算符(简单易懂)
前言: 位运算符是用来对二进制位进行操作的 c语言中有6种位运算符: & 按位与 [链接]: https://blog.csdn.net/weixin_42837024/article/det ...
- c语言的int型运算符,C语言运算符
本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! C语言运算符是说明特定操作的符号[1] ,它是构造C语言表达式的工具[2] .C语言的运算异常丰富,除了控制语句和输入输出以外 ...
- c语言的运算符分类ppt,c语言的数据类型、运算符与表达式.ppt
c语言的数据类型.运算符与表达式.ppt 第3章数据类型.运算符与表达式,预备知识 数据类型 常量与变量 不同类型数据间的转换 运算符和表达式3.0 预备知识 计算机中数的表示及进制转换 数码.基与权 ...
- 详解C语言中的位操作运算符可以怎么用?
目录 前言 位运算符介绍 位运算符的应用 一般案例 特殊用法 前言 最近在工作中碰到C语言中的位操作运算符,然后发现自己对这一块的内容比较模糊,所以打算写一篇博文记录这个知识点,今天是3月份的最后一天 ...
- %3c- r语言运算符,R语言基础教程之运算符
原标题:R语言基础教程之运算符 运算符类型 在R编程中有以下类型的运算符 - 算术运算符 关系运算符 逻辑运算符 赋值运算符 其他运算符1.算术运算符 下表显示了R语言支持的算术运算符.运算符对向量的 ...
- c的按位取反运算符(~) 与逻辑逻辑(!)
位运算 位运算的运算分量只能是整型或字符型数据,位运算把运算对象看作是由二进位组成的位串信息,按位完成指定的运算,得到位串信息的结果. 位运算符有: &(按位与).|(按位或) ...
- C语言中的位运算符主要有哪些?逻辑右移与算术右移的区别?
逻辑右移与算术右移的区别? 逻辑右移就是不考虑符号位,右移一位,左边补零即可. 算术右移需要考虑符号位,右移一位,若符号位为1,就在左边补1,:否则,就补0. 所以算术右移也可以进行有符号位的除法,右 ...
- c语言运算符类型转换,C语言中强制类型转换运算符的独特作用
C语言中强制类型转换运算符的独特作用 在C语言中有一个强制类型转换运算符,它为C语言中的数据类型转换带来 (本文共2页) 阅读全文>> 在进行C++类的设计时,我们常常需要为类对象设计运算 ...
最新文章
- MPLS *** Trouble Shooting 笔记
- 声音信标发出白噪声和发出chirp信号的对比测距说明
- python中调用函数时必须有实参_Python之函数(一)定义函数以及传参
- Elasticsearch--建议器
- C++之类模板最简单的使用
- 漫步最优化三十九——Fletcher-Reeves法
- Rabbtmq 消费端-幂等性保障
- 【opencv】通过摄像头进行实时边缘检测
- Java开发中巧妙使用链表来实现模拟栈的入栈出栈操作
- Dinic PK Isap
- colorkey唇釉是否安全_colorkey小黑镜唇釉好用吗
- 华尔街(Wall Street)与先锋集团(Vanguard )之间的战争
- 企业wiki之confluence安装部署(linux)及其破解
- Bzoj2882 工艺
- c语言ftell函数_使用示例的C语言中的ftell()函数
- 基于cpolar内网穿透工具ssh远程访问linux服务器
- CAD arx常用函数
- 极客大学python进阶训练营_极客大学Python进阶训练营新版2.0
- Python 简易图形用户界面计算器
- mysql 1236错误_mysql报1236错误代码该如何解决
热门文章
- 多个条码标签如何在一张纸上打印
- mysql jdbc 5.6_mysql5.6 jdbc驱动官网下载|
- php 按指定长度分割字符串,php实现将字符串按照指定距离进行分割的方法
- 二进制转换八进制图解_二进制如何转换成八进制?
- 经验总结:完整做完一款游戏需要经历哪些流程?
- eova1.4版本下拉框没有滚动条
- matlab——矩阵运算
- SQL2014 MySQL_SQL Server 2014 Express 官方免费版下载
- 使用pyinstaller打包python源代码生成exe程序
- 2016年统计用区划代码和城乡划分代码(截止2016年07月31日) 省市县镇+url