一、原码 补码 反码的基本概念

1.原码:就是符号位加上真值的绝对值
2.反码:正数的反码是其本身,负数的反码是其原码符号位不变,其余位取反
3.补码:正数的补码是其本身,负数的补码是其反码加1(保留符号位,其他位+1)
注意:计算机内数值以补码进行存储

二、原理解析

结论:~的结果为其本身正负变号,然后-1(符号变号,大小-1)
(~按位取反,符号位也需要取反,即0–1,1–0)
计算机输入数值保存过程
输入数->转为二进制补码保存在计算机中
按位取反(~)过程
对计算机内保存的补码进行按位取反->求得按位取反数值的补码->求其反码->求其原码

原理:按位取反的计算

正整数取反: 例如 1 (1字节8位数)

原码: 0000 0001
-> 补码:0000 0001
-> 取反:1111 1110
(此时为负数,计算机内数值以补码保存,会认为这是一个负数的补码,负数原码和补码不同需要转变为反码,再转变为原码 )
-> 补码+(-1)转变为其反码:1111 1101
->反码除符号位按位取反得到其原码1000 0010 即 -2;
所以输出-2

负整数的取反过程: 例如 -1 (1字节8位数)
原码: 1000 0001 (以补码形式存储,负数应该先求补码)
-> 反码:1111 1110
->补码:1111 1111(计算机以补码保存)
->取反:0000 0000 即 0(正数的原码反码补码相同);
所以输出为0

C语言取反(~)简单理解相关推荐

  1. 关于C语言函数的简单理解

    关于C语言函数的简单理解 C语言中的函数 在C语言中,函数是构成程序的基本模块.程序的执行从main()函数的入口开始,到main()函数的出口结束,中间循环.往复.迭代的调用一个有一个函数.每个函数 ...

  2. Python中取反的理解

    转载大牛的链接,理解原码.补码之间的关系 https://blog.csdn.net/luolaifa000/article/details/83010807 首先,理解python中,计算机只存储整 ...

  3. C语言~取反关键字//~1不是0

    先上码 #include <bits/stdc++.h> using namespace std;int main() {char ch = 0;while(~scanf("%c ...

  4. java数字取反_java中源码反码补码与取反的理解

    数字在计算机里是按照二进制来表示的. 箭头朝哪边就是朝哪边移动 补码,反码,和源码 负数原码转化为补码:符号位不变,数值位按位取反,末尾加一. 负数补码转化为原码:符号位不变,数值位按位取反,末尾加1 ...

  5. C语言----取反~

    一.正数 (1)执行~0001后 为1110(内存中就是这样存储0001取反的结果的) 这个结果是以补码的方式存储的 但是真真的显示的时候往往用原码,就是1010了<最高位为符号位,这里为1,就 ...

  6. C语言 ~ 取反操作

    由于负数的原码,补码,反码不同 在使⽤~计算负数时,由于在计算机中,负数的补码,反码,原码不同,因此⾸先将操作数的值计算为补码,再进⾏取反运算 反码->补码->取反 正数(正数的补码,反码 ...

  7. c51单片机c语言取反运算符,单片机c语言教程:C51运算符和表达式

    在制作电路前我们先来看看要用的 MAX232,这里不去具体讨论它,只要知道它是 TTL和 RS232 电平相互转换的芯片和基本的引脚接线功能就行了.通常我会用两个小功率晶体管加少量的电路去替换MAX2 ...

  8. c语言负数左移右移_C语言位运算符:与、或、异或、取反、左移和右移!

    语言位运算符:与.或.异或.取反.左移和右移 位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进制位的问题.C语言提供了6个位操作运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符 ...

  9. c语言负数左移右移_C语言位运算符:与、或、异或、取反,左移和右移

    C语言位运算符:与.或.异或.取反.左移和右移 个位操作运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型. ,则该位的结果值为1,否则为0 | ...

  10. 16位异或 c语言,C语言位运算符:与、或、异或、取反、左移和右移

    <C语言位运算符:与.或.异或.取反.左移和右移>由会员分享,可在线阅读,更多相关<C语言位运算符:与.或.异或.取反.左移和右移(7页珍藏版)>请在人人文库网上搜索. 1.C ...

最新文章

  1. JAVA学习--反射属性操作
  2. JavaWeb中验证码校验的功能实现
  3. android快速点击两次,如何通过在Android中快速单击两次按钮来防...
  4. mysql 5.6 分区_Mysql5.6—分区表及独享表空间
  5. 二叉搜索树的插入与删除(C语言)
  6. 比特币未来几个月怎么样_您需要了解的关于比特币技术的未来
  7. 调色师必须了解的LUT知识
  8. Java基础学习总结(159)——JDK15 正式发布了!新增14个新特性
  9. 2021计算机科学调剂,2021北京科技大学计算机科学与技术专业接收调剂研究生的通知...
  10. 12 个轻量级的 JavaScript 库
  11. FullPage.js – 轻松实现全屏滚动(单页网站)效果
  12. Python 画数学函数图像 matplotlib.pyplot
  13. C语言笔记 清屏(循环时不一闪一闪的) 光标移动到任意位置 带注释(详细)
  14. Exception processing template “admin/table“: Could not parse as expression: “(thymeleaf与layui冲突)
  15. beyond compare 对class文件反编译及比较
  16. 7天刷完剑指offer(一)
  17. 解决无法删除文件夹的情况:文件夹正在使用,操作无法完成,因为其中的文件,或文件夹已在另一个程序中打开...
  18. 连云港师范专科学校计算机老师,喜报:我校学生在2021年中国大学生计算机设计比赛江苏省赛中获一等奖...
  19. 计算机学生会大型户外活动,学生会户外活动策划方案
  20. matlab for循环与subs应用 求解

热门文章

  1. “ISO9001:2015质量管理体系 要求”学习笔记
  2. html文字闪光效果,css实现字体闪烁效果
  3. 易语言EXUI游戏充值系统源码
  4. 基于python实现细胞自动机
  5. auto.js实现微信双向删除好友功能(检测僵尸粉)
  6. 《现代通信原理学习》(二)随机信号分析
  7. Android studio进行文件对比
  8. iOS开发,第三方应用微信授权登录,获取微信unionid
  9. 黑苹果声卡id注入对照表_声卡,给苦苦做AppleALC的新人一个提示,试着先原版AppleALC.kext,注入ID驱动试试...
  10. AI头发笔刷_1500款设计字体,海量PS笔刷,icon模板免费送!还为设计发愁吗?