当前位置: 首页 > news >正文

正数负数的取反运算推导过程

取反题目

题目:数据常用位十进制数据举例 我们计算a = 60的取反运算c=~a
求c

引用的知识点

知识点:
正数的反码 补码 都一样。
0的补码反码都一样
负数的反码,最高是标记符号位,其他位置1变0 1变0
负数的补码 反码+1

步骤


斜体样式本篇我们全用8位二进制来解析

  1. 换算二进制

60变二进制:0011 1100的由来

2的位方1286432168421
60拆二进制00111100
  1. 二进制换算补码

原因:计算机存储一个数值时, 是将数的补码存储在磁盘上。
正数的补码 反码即其本身所以60的补码还是:0011 1100

3.取反运算(的到目标数据的补码)

补码的1变0 0变1
得到了我们目标取反运算。 这个二进制即我们目标数据补码。
所以我们得到:1100 0011(目标数据存在磁盘得样子,也就是它的补码)

4.目标数据补码推算 反码

我们通过这个目标数据的补码-1 的到它的反码
得到:1100 0010

5.目标数据反码推算 原码

此时这个数已经是一个负数了 保持它的符号位不变,其他0变1 1变0.
1011 1101

6.带符号的原码换算十进制

2的位方6432168421
负数原码10111101

-1*(32+16+8+4+1)=-61

则:60的取反运算时 -61

举一反三

我们反推-61的取反运算
1.转二进制
1011 1101
2.算反码(符号不动 其他1 0 互换)
1100 0010
3.算补码  反码+1
1100 0011 (-61躺在磁盘的姿势就这样)
4.取反运算
0011 1100 (得到我们目标数据躺在磁盘的姿势了,也就是它的补码)
5.补码算反码 原码(正数的补码 反码原码一样)
0011 1100 
6.二进制换算十进制:
2的位方1286432168421
00111100
盘它:
32+16+8+4 = 60
所以,-61的取反运算是60
http://www.lryc.cn/news/26202.html

相关文章:

  • C语言 条件编译
  • Linux: ARM GIC只中断CPU 0问题分析
  • 测试软件5
  • 前端JS内存管理
  • 第七章.集成学习(Ensemble Learning)—袋装(bagging),随机森林(Random Forest)
  • Java_面向对象
  • 【IoT】智能烟雾报警器
  • Python实现定时执行脚本(5)
  • JavaSe第4次笔记
  • epoll机制
  • Java使用不同方式获取两个集合List的交集、补集、并集(相加)、差集(相减)
  • 【Android笔记80】Android之Retrofit适配器和文件上传下载
  • Nodejs模块化
  • C++STL基础
  • 数学建模经验【更新中】
  • 【python学习笔记】:Excel 数据的封装函数
  • 如何获取或设置CANoe以太网网卡信息(GET篇)
  • “终于我从字节离职了...“一个年薪50W的测试工程师的自白...
  • 【Spring】八种常见Bean加载方式
  • 第五回:样式色彩秀芳华
  • 关于@Test单元测试
  • 【项目实战】WebFlux整合r2dbc-mysql实战
  • go版本分布式锁redsync使用教程
  • 大数据之Hudi数据湖_大数据治理_简介_发展历史_特性_应用场景---大数据之Hudi数据湖工作笔记0001
  • 射频功率放大器基于纵向导波的杆状构件腐蚀诊断方法的研究
  • Leedcode 二分查找 理解1
  • 【告别篇】大家好,再见了,我转行了,在筹备创业
  • Java——岛屿数量
  • 《代码整洁之道》笔记
  • 个人网站如何集成QQ快捷登录功能?