要理解C语言中按位取反操作符,首先要知道几个概念。

原码、反码、补码的概念

  1. 原码是一种计算机中对数字的二进制定点表示方法。其最高位为符号位,该位为0表示正数,该位为1表示负数。
  2. 反码简单来说就是除符号位不变外,其余各位按位取反,即0变1,1变0。
  3. 补码是反码+1。

特别注意:对于正数来说三者相同


按位取反的计算

输入数转换为二进制(该数的原码)转换为反码转换为补码按位取反(此时为按位取反后数的补码)转换为反码转换为原码打印

举个例子:

当我们从键盘输入1时,1的原码是00000001,前面提到正数的原码、反码、补码相同,所以内存中存储的也是00000001。此时按位取反,变为11111110(此时为按位取反后数的补码)。注意原码和反码之间转换符号位是不变的,但是按位取反需要改变 。补码+(-1)转换为反码是11111101,再转换为原码是10000010。由进制转换可知为-2。

#include <stdio.h>int main()
{int a = 1;printf("%d",~a);return 0;
}

若我们从键盘输入负数-1,-1的原码是10000001,因为负数的三码并不相同,所以要先进行转换,反码为11111110,补码为11111111。所以内存中存储的也是11111111。此时按位取反,变为00000000(此时为按位取反后数的补码)。由其符号位可知位正数,则该数原码也位00000000。进制转换得该数为+0,

#include <stdio.h>int main()
{int a = -1;printf("%d",~a);return 0;
}

总结

按位取反涉及到一些进制转换的内容,实际上难度不大,重要的是了解其概念和计算原理。

C语言中按位取反(~)操作符相关推荐

  1. dart系列之:dart语言中的特殊操作符

    dart系列之:dart语言中的特殊操作符 文章目录 简介 普通操作符 类型测试操作符 条件运算符 级联符号 类中的自定义操作符 总结 简介 有运算就有操作符,dart中除了普通的算术运算的操作符之外 ...

  2. 【C语言深度剖析】深入理解C语言中的移位操作符(代码+图解)

    文章目录 移位操作符 原码 反码 补码 左移操作符 正数左移 负数左移 右移操作符 算术右移 正数算术右移 负数算术右移 逻辑右移 移位操作符 分为: 左移操作符:<< 右移操作符:> ...

  3. 如何比较浮点数相等_『GCTT 出品』Go 语言中的比较操作符

    这篇文章专注于 6 个操作符,==,!=, 和 >=.我们将深入探讨它们的语法和用法的细微差别.对很多人来说,这听起来不像是吸引人的事,或者他们可能已经从其他编程语言获得了糟糕的经验.然而,在 ...

  4. c语言中逗号是什么字符,C语言中的逗号操作符

    在C语言中,","的用法有两种:一种是做分隔符,另一种是作运算符.在变量声明语句.函数调用中,逗号是做分隔符用的,例如: int a,b,c; scanf("%f%f%f ...

  5. C语言中的逗号操作符

    在C语言中,","的用法有两种:一种是做分隔符,另一种是作运算符.在变量声明语句.函数调用中,逗号是做分隔符用的,例如: int a,b,c; scanf("%f%f%f ...

  6. R语言中的%in%操作符是干什么的?

    %in% 判断前面一个向量内的元素是否在后面一个向量中,返回布尔值. 代码实例 a <- c(1,3,13,1443,43,43,4,34,3,4,3) b <- c(1,13,11,13 ...

  7. C语言中的算数操作符------除号操作符

    1.有哪些算数操作符: + (加号) -   (减号) *   (乘号) /   (除号) %  (取余,即取模) 2.除号操作符 / / 两边的操作数如果都是整数,则执行整数除法.而只要有浮点数,执 ...

  8. C语言中的逻辑移位和算术移位

    1.逻辑移位 左边用0补充,右边丢弃: 2.算术移位 左边用原该值的符号位填充,右边丢弃. ---------------- c语言中的移位操作符,在左移时执行的是逻辑移位,即逻辑左移,在右移时执行的 ...

  9. Gox语言中的运算符和操作符-GX13

    Gox语言中的运算符和操作符还是比较简单的, // Assignment a = nil println(a) a = true println(a)println("-----" ...

  10. c语言中 的优先级几级,C语言中的操作符优先级的详细介绍

    C语言中的操作符优先级的详细介绍 C语言中操作符的优先级大全, 当然c++, Objective-C,大部分语言都试用. 下面是来自The C Programming Language 2th的总结. ...

最新文章

  1. 斯坦福前校长John Hennessy、张亚勤等一众大佬云集,共探最前沿技术 | CNCC2020
  2. 绝症老父亲即将说不了话,儿子用AI技术挽留他的声音
  3. Android中的基础控件CheckBox、RadioButton、ToggleButton、SeekBar
  4. java使用jdbc调用hive出现The query did not generate a result set!
  5. 在DockerHub发布Dubbo Admin镜像
  6. Java通过Pattern类使用正则表达式
  7. Linux+apache+svn
  8. (译)如何使用cocos2d制作基于tile地图的游戏教程:第一部分
  9. url 的正则表达式:path-to-regexp
  10. LED,LCD,OLED,miniLED,MicroLED显示详解
  11. lodop转到其他html页面,vue项目中使用Lodop实现批量打印html页面和pdf文件
  12. 金狐超级软件盘 07.14更新
  13. 一篇很感人的DOTA小说--我本近卫
  14. CentOS 7.5 安装Nginx教程
  15. React-笔记整理
  16. 【xinfanqie】笔者支招:让Win7系统下的硬盘不在狂闪的诀窍
  17. 企业做短视频常见的3问题:太真实了
  18. 后台配置税码(进项税或者销项税税码)
  19. krpano获取地址栏传参
  20. 两个字符串首尾相连,查看是否相同

热门文章

  1. 怎么让字体拥有金属风格?15种不同的金属风格文字效果ps样式不可错过!
  2. 水经注全球离线地图数据3.0即将发布
  3. SDK环境变量配置 adb配置
  4. php 随机输出字符串,如何使用PHP生成随机字符串
  5. 实战破解思科模拟器packet tracer-去除登陆窗口
  6. icd植入是大手术吗_手术达人|杨兵:ICD植入术一例
  7. 20220522Python3.10安装教程
  8. java web表单系统
  9. Java原生http请求调用企业微信api,获取打卡记录
  10. WPS Office Pro v10.8.2.6726 绿色便携专业增强版