最佳答案

你的概念不正确,按位运算,只对内码进行操作,不管类型,而反码/补码是针对有符号整型的(符号位不变)

对负数按位取反,得到的是正数,它的符号位也会取反的

追问:

哦,内码是不是补码呢?-19的二进制 1 0010011 反码 1 1101100 补码 1 1101101 按位取反 0 0010010 9的二进制 0 0001001(原反补) 按位取反 1 1110110(教程上说是补码,还要计算出反原码,而上面负数计算出补码,取反就是值,为什么正数还要取反之后在计算)

追问:

就是按位取反之后的值,还要计算出反原码呢

追答:

个人觉得你的教程有点误导(当然,因为计算机是一门新型技术,没有绝对的权威和标准),我说的按位取反是从应用角度.它与补码/原码没有关系(C语言的~运算符)而在理论角度,正数的原码、反码与补码都是相同的只有负数才会去计算反码和补码一般的说法,反码中的按位取反,符号位是不变的(且现在除单片机,没有8位的了)

追答:

目前大家认可的说法,正数的原码、反码与补码是相同的,它不会计算原码、反码与补码你上面的9的二进制的原码、反码与补码都是 00001001

追问:

哦,那你能帮我用你的方法,计算出-19和9。按位取反之后的值吗?就像上面我那样。

追答:

若是实际的按位取反(8位的)Not(-19D) = ‭18D= 00010010BNot(9D) = -10D =‭11110110‬B这个无论是用微软的计算器,还是下列程序,都是相同的结果#includeint main(){ char x=-19,y=9; x=~x; y=~y; printf("%d %d\n",x,y); return 0;}

追问:

那个过程能不能写一下啊

追答:

过程与你的一样-19在计算机内部是用补码存储的,8位的二进制为‭11101101‬按位取反后值为00010010也就是十进制的18而9的话,二进制为00001001按位取反后值为11110110若是有符号的十进制就是-10当然,若是无符号的就是246另外,符号只是人为的规定,二进制的值才是真正内部值

最佳答案由网友  whoami1978  提供

c语言按位取反 补码,按位取反运算符,数值取反之后是反码,还是补码- -相关推荐

  1. C语言学习5:机器数、真值、原码、反码和补码详解

    目录 1.前言 2.机器数 3.真值 4.原码 5.反码 6.补码 1.前言 上篇博文中,笔者介绍了计算机存储器存储容量大小的常用单位 .在未来,我们还会接触到各种各样的数据类型,并且这些数据在运算的 ...

  2. C语言基础 - 正负数按位取反公式推导

    1字节 = 8位 实例:~9 原码(二进制码):00001001 反码:00001001 补码:00001001 因为计算机以补码进行存储计算,正数的原码.反码.补码一致 1.原补码取反:111101 ...

  3. C语言中 原码、反码、补码 以及 取反(单目操作符 ~ )

    欢迎大家评论区中指正呀,谢谢大家啦 文章目录 前言:必备知识 一.原码.反码.补码 1.原码 2.反码 3.补码 二.取反 (单目操作符 ~ ) 1.数值8 2.数值-8 三.负整数 的 原码.反码. ...

  4. 二进制的原码,反码,补码

    1.任何数都是以二进制的补码存储: 2.正数的原码,反码,补码都是一样的: 3.负数的原码是正数的原码,符号为为1:反码是原码符号位不变其它位取反,补码是反码加1: 示例: -13原码:1000 11 ...

  5. 原码、反码、补码二进制表示

    学习目标 1.什么是二进制,谈谈你的理解 2.什么是原码,补码以及反码 二进制:0和1组成的数字系列,逢二进一.对于计算机而言,只认识0和1,数据在计算机的存储都是以二进制的形式存储. 原码,反码,补 ...

  6. 原码、反码、补码、移码之间的转换

    原码简介:原码(true form)是一种计算机中对数字的二进制定点表示方法.原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表 ...

  7. 原码、反码、补码及补码转原码

    1. 什么是原码.反码.补码? 计算机要使用某种编码方式存储 原码, 反码, 补码是机器存储某个具体数字的编码 计算机底层存储的数据都是二进制形式的补码 对于一个正数来说,原码.反码.补码一致 对于一 ...

  8. 超详细介绍!!!带你认识各种进制数的及其转换以及原码,反码,补码

    1.本文详细介绍了二进制,八进制,八进制和他们之间的相互转换 2.也详细介绍了原码,反码,补码以及它们之间的相互转换,让你更加了解计算机数据的底层运行逻辑 目录 一:认识各种进制数 1.十进制数 2. ...

  9. 原码、反码、补码详解

    文章转自: http://c.biancheng.net/ 文章目录 1. 原码 2. 反码 3. 补码 4. 补码到底是如何简化硬件电路的 5. 实例分析 1. 原码 将一个整数转换成二进制形式,就 ...

最新文章

  1. 猎头出500万年薪挖百度某高T,却被对方拒绝!网友:钱不是最重要的!
  2. How to create a jump server in AWS VPC
  3. mysql中文显示问号
  4. sh 脚本执行sql文件传参数
  5. 简介浏览器内核与JavaScript引擎
  6. 因为此网站使用了 hsts_长春定制小程序服务,网站设计市场价格
  7. html大学生活主题班会,我的大学生活主题班会策划书
  8. 【Python系列】之python2.7.6离线安装Matplotlib
  9. Sql Server远程连接
  10. IBM\浪潮\Dell\HP服务器raid(磁盘阵列)配置
  11. 使用了css3动画的元素z-index失效解决办法
  12. c语言encoder作业字符数组,C语言练习题库----数组
  13. Python 深入浅出 - HelloWorld
  14. 电脑桌面计算机图标在哪,电脑计算机图标在哪
  15. 2021-02-06-身高与车架大小
  16. var foo =function (){}与function foo()的区别
  17. Mybatis的一个连接mysql的坑
  18. Kubeadm 部署企业级高可用Kubernetes(适用于ECS)
  19. 论文投稿指南——中文核心期刊推荐(化学)
  20. 【STM32】使用BRR与BSRR寄存器控制GPIO输出

热门文章

  1. mysql中更新的命令是_MySQL 语言中,更新表数据的命令是( )。_学小易找答案
  2. Linix中Dockerfile部署Spring Boot项目
  3. 将一张图片修改为合适的像素大小
  4. linux 套接口文件_继上一篇,继续介绍linux 套接口
  5. 网站服务器倒闭,云服务器商倒闭怎么办
  6. antd 表格树如何展开_元件区域 -- 菜单 | 表格 | 流程图 | 图标
  7. 往数组里添加键值对_框架都是花哨的东西!js才是根基,分享一下给原生js数组的操作...
  8. ibatis调用mysql带OUT类型参数的存储过程并获取返回值
  9. java频繁查询数据库_如何解决Cookie登录 频繁查询数据库问题?
  10. 深度搜索和广度搜索领接表实现_算法基础04-深度优先搜索、广度优先搜索、二分查找、贪心算法...