1、前言

计算机存储的整型数据是存储的2进制,而此2进制并不是此10进制数直接对应的2进制数(原码),而是存储的此2进制数的补码。
所以,取反(~)是对补码的按位取反操作,而要从原码转换成补码,必须要先从原码转换成反码,再从反码转换成补码才可以。

注意:2进制的最高位是符号位(在最左侧)

2、看两个例子 :

问题1: ~0的值是多少?

    以正整数 0(10进制)为例,要得到~0的结果,操作步骤如下 :原码 0000 0000 把10进制数转换成8位的2进制数反码 0000 0000 正数的反码是原码补码 0000 0000 正数的补码也是原码按位取反得到新补码 1111 1111 将补码按位取反,注意此时最高位从0变成了1,即已变成负数新反码 1111 1110 再将[按位取反]后的新补码,转换成新反码,注意非常关键的一个变换过程:现在是将负数从补码转反码;那么需要将补码的最低位-1,同时符号位(1表示负,0表示正)要保持固定不变新原码 1000 0001 再将新反码转新原码,注意是负数,符号位要固定不变,最后得到结果就是 -1 ,到此分析完毕。

问题2: ~-1的值是多少?

    负整数-1(10进制)为例 ,要得到~-1的结果,操作步骤如下 :原码 1000 0001 把10进制数转换成8位的2进制数反码 1111 1110 负数的反码是,符号位(1表示负,0表示正)固定不变,其他位按位取反(通俗来讲就是把0变成1,1变成0)补码 1111 1111 负数的补码是,符号位(1表示负,0表示正)固定不变,但是要在反码的最低位+1(最右侧+1)按位取反得到新补码 0000 0000 按位取反后的补码(此步骤核心就是对应,这个操作符~ 的操作),我们需要将补码转换成反码,在转换成原码,最后转换成10进制数结果注意上面[按位取反]步骤执行后,最高位从1变成了0,即已变成正数,后续我们要按照正数的反码、补码来进行操作新反码 0000 0000 正数的反码与补码、原码是相同的新原码 0000 0000 正数的反码与补码、原码是相同的获取10进制数结果,就是0,到此分析完毕

问题3: ~1的值是多少?

    以正整数 1(10进制)为例,要得到~0的结果,操作步骤如下 :原码 0000 0001 把10进制数转换成8位的2进制数反码 0000 0001 正数的反码是原码补码 0000 0001 正数的补码也是原码按位取反得到新补码 1111 1110 将补码按位取反,注意此时最高位从0变成了1,即已变成负数新反码 1111 1101 再将[按位取反]后的新补码,转换成新反码,注意非常关键的一个变换过程:现在是将负数从补码转反码;那么需要将补码的最低位-1,同时符号位(1表示负,0表示正)要保持固定不变新原码 1000 0010 再将新反码转新原码,注意是负数,符号位要固定不变,最后得到结果就是 -2 ,到此分析完毕。

Java按位取反操作~相关推荐

  1. Java 使用itextPdf7操作pdf,写入照片这一篇就够了

    Java 使用itextPdf7操作pdf,写入照片这一篇就够了 1. 效果图 1.1 M*N列图片(无边界&有边界) 1.2 图片重叠 1.3 文字背景图片 1.4 图片与文字相邻 & ...

  2. Java使用Jdbc操作MySql数据库(一)

    这个示例是Java操作MySql的基本方法. 在这个示例之前,要安装好MySql,并且配置好账户密码,创建一个logininfo数据库,在数据库中创建userinfo数据表.并且在表中添加示例数据. ...

  3. java 字节数组 操作_Java-固定字节数组对象

    我需要通过TCP / socket连接到第三方系统并检索一些数据. 将要发送的数据格式为固定长度格式和二进制. 请求示例: short MessageID = 5; int TransactionTr ...

  4. Java数组常见操作

    Java数组常见操作 文章目录 Java数组常见操作 7.0 数组的遍历 1.使用foreach循环访问数组中每个元素. 2.使用简单的for循环(多层循环嵌套)来遍历数组. 7.1 数组长度 7.2 ...

  5. Java剪切板操作大全

    转载自   Java剪切板操作大全 1. 概述 提起剪切板,一般都是在桌面系统或工具中使用.目前,操作Java剪切板有两种形式,这也对应着两种不同的技术Swing和JavaFX. 而剪切板有可以分为系 ...

  6. Java 使用 POI 操作 Excel

    Apache POI 基本介绍 Apache POI 是 Apache 软件基金会提供的 100% 开源库.支持 Excel 库的所有基本功能. 图片来源:易百教程 基本概念 在 POI 中,Work ...

  7. Java本地文件操作

    概述:Java本地文件操作,涉及到文件/文件夹的创建,文件/文件夹属性的读取与设置,文件/文件夹的重命名,目录结构的遍历,以及文件内容的读取与写入. File属于java.io.File. ---在E ...

  8. import java文件,java 文件夹操作,java文件夹,import java.

    java 文件夹操作,java文件夹,import java.import java.io.File; import java.io.FileInputStream; import java.io.F ...

  9. java中文件,java中文件操作大全

    java中文件操作大全 一.获得控制台用户输入的信息 view plaincopy to clipboardprint? / //获得控制台用户输入的信息 return throws ioexcept ...

最新文章

  1. [整理]Git使用文章整理
  2. 【IT笔试面试题整理】反转链表
  3. TZOJ 4621 Grammar(STL模拟)
  4. linux怎么看是否安装kde桌面,ubuntu 7上安装kde桌面
  5. Android的历史、版本与开发
  6. 小说Symbian的签名
  7. XISE-WBMS管理V30.0最新无后门过狗过WAF版
  8. python画同心圆程序_如何用python画同心圆并内接一个五角星?
  9. 开发QQ桌球瞄准器(1):桌球瞄准器介绍与使用方法
  10. Undefined与Null的区别
  11. 【NLP基础理论】10 上下文表示(Contextual Representation)
  12. Marvin ,Java开发图像处理框架
  13. 大魔王程序员生成记#06.2#C语言习题
  14. centos7 应用笔记: fslint 文件查重
  15. 分享一个音乐API接口地址
  16. 2022年数维杯国际大学生数学建模挑战赛C题如何利用大脑结构特征和认知行为特征诊断阿尔茨海默病解题过程
  17. Visual Studio 2019 卸载干净+下载安装方法 2021-5-7
  18. 《Poluparity Prediction on Social Platforms with Coupled Graph Neural Networks》阅读笔记
  19. Oracle 分析函数over,列转行函数pivot理解及综合运用(报表中的小计和合计)
  20. H323plus的分析

热门文章

  1. 论文学习--Learning High-Speed Flight in the Wild
  2. 【ACWing】97. 约数之和
  3. 使用visio绘制无线信号符号
  4. iBeacon系列:一、iBeacon的简介及作用
  5. vue:Cannot read property ‘xxx’ of undefined 出现原因
  6. 招商银行余额变动提醒
  7. 想不想修真鸿蒙秘籍,想不想修真门派绝学一览 各门派秘籍汇总
  8. 武汉大学igs(FTP)
  9. 启示录:美柚如何度过“九死一生”魔咒?
  10. 【基础知识】IIC(I2C)协议