今天研究了一下java中的(~)运算符

System.out.println(~5);

结果输出为:-6

抱着很好奇的心理,我们来研究下为什么是-6呢?。

首先,非(~)运算符,是java众多运算符的一种,“与”、“非”、“或”、“异或”。

需要明白一点的是,在计算机中 正数,负数都是通过补码的形式保存的,而正数的补码是其本身的原码,而负数的补码则要根据其绝对值的原码转化为反码,然后通过加1的操作得到补码的。明白了这一点我们来看下5在计算机中是怎么保存的把。

5的源码:0000 0000 0000 0101,5在计算机中保存的补码:0000 0000 0000 0101;

经过(~)运算以后,也就是逐个取反

5(~)运算后得到的:1111 1111 1111 1010,那么这个二进制在计算机中保存的形式是这样子的,既补码的形式保存的,当然第一位是符号位。

那么由补码推算回原码,就是我们需要的,首先转反码,然后转原码。补码需要减去1(1111 1111 1111 1001),然后再逐个取反(1000 0000 0000 0110)。

5(~)的反码:1000 0000 0000 0110,那么由这个二进制我们就可以得到 -6 了,最前面的1是符号位,不理他。

个人研究,如果有什么错误,欢迎指正。

java中的(~)运算符原理相关推荐

  1. Java中随机数的原理,以及使用时的注意点

    转载自   Java中随机数的原理,以及使用时的注意点 1 前言 一提到 Java 中的随机数,很多人就会想到 Random,当出现生成随机数这样需求时,大多数人都会选择使用 Random 来生成随机 ...

  2. java中的.运算符_java中的各种运算符

    1.算术运算符: 算术运算符也就是我们小学所学过的:+ - * /:还有取模运算符:%:取模运算符也就是求余的 运算: 运算形式:操作数 + 操作数:操作数 - 操作数:操作数 * 操作数:操作数 / ...

  3. 12 java中instanceof运算符的意义和用法

    java中instanceof运算符的意义和用法 instanceof运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来标识该对象是否为特定类或者它的子类的一 ...

  4. 详细介绍Java中的运算符

    Java中类型转换 不同类型的数据可以在一起运算,需要将他们转换为同一类型,就可以进行运算 Java类型转换的分类 隐式类型转换[自动类型转换] 小范围数据转大范围 byte->short-&g ...

  5. 关于java中位运算符的使用和理解

    关于java中位运算符的使用和理解 &(按位与) ' & ' 符号的作用是对运算符的两侧以二进制表达的操作符按位进行'与'运算. 规则: 只有两个操作数对应位同为1时,结果为1,其余全 ...

  6. Java中的运算符——逻辑运算符详解

    逻辑运算符主要包括逻辑与( & ),逻辑或( | ),逻辑异或( ^ ),短路与( && ),短路或( || ).所有逻辑运算符的特点是操作数都是布尔类型,并且最终的运算结果也 ...

  7. java中冒号运算符起什么作用呢?

    转自: java中冒号运算符起什么作用呢? 下文笔者讲述java中冒号运算符的功能简介说明,如下所示: 冒号运算符的功能: 1.跳转2.三元表达式3.迭代循环4.断言5.switch6.方法(jdk8 ...

  8. Java中的运算符——赋值运算符详解

    赋值运算符主要是这几种:=.+=.-=.*=./=.%=,其它和二进制相关的内容这里就不详细解释了.赋值类的运算符包括基本赋值运算符(=)和扩展的赋值运算符(+=.-=.*=./=.%=).我们来看一 ...

  9. java中JVM的原理【转】

    一.java虚拟机的生命周期: Java虚拟机的生命周期 一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序.程序开始执行时他才运行,程序结束时他就停止.你在同一台机器上运行三个程序,就会 ...

  10. Java中的锁原理、锁优化、CAS、AQS详解

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:景小财 www.jianshu.com/p/e674ee68 ...

最新文章

  1. 用.NET创建Windows服务
  2. 隔壁组Leader降级了!从不pua,亲自写代码,自己加班也不让下属加班!
  3. ”舍得“大法:把自己的优点当缺点倒出去
  4. anaconda安装yolov3_YOLOv3_图像识别_神经网络_人工智能
  5. CSDN Github Markdown编辑常用功能符号补充
  6. Linux软件安装之YUM
  7. 如何选择c语言学习书籍
  8. 如果你不会扒谱,来吧,这款软件给你超能力
  9. 【网络安全】最全渗透学习攻略
  10. web打印网页指定区域
  11. STATA如何查看、改变文件的工作路径
  12. win11关闭开机密码的方法
  13. 局域网即时通讯软件_企业即时通讯软件需要符合哪些要求?
  14. Android 闹钟app 课程设计
  15. Android TextView、EditText显示输入法自带表情,记录一下
  16. Win11任务栏太宽了怎么办?教你一招快速修改任务栏大小
  17. mysql 不支持分区_MySQL分区表的局限和限制
  18. Unity协程的返回值
  19. Virustotal威胁猎捕
  20. Sqlmap速查表/功能移植/Python批量检测SQL注入

热门文章

  1. 百度前端学院_小薇课堂_task2
  2. Dell服务器显示logo后就关机,dell开机卡在logo死机的常见原因及解决方法
  3. 网络编程懒人入门(十一):一文读懂什么是IPv6
  4. GridBagConstraints参数详解
  5. Redis数据结构为字典Hash 实践 之 系统数据字典实时触发缓存存储
  6. Snowflake 弹性数仓 设计原理
  7. RFID智慧绿色洗涤系统
  8. elasticsearch整合springBoot
  9. Oracle删除表中的重复数据
  10. 率先布局 RWA 赛道,PoseiSwap 成为最具先进性的 DEX