java中的(~)运算符原理
今天研究了一下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中的(~)运算符原理相关推荐
- Java中随机数的原理,以及使用时的注意点
转载自 Java中随机数的原理,以及使用时的注意点 1 前言 一提到 Java 中的随机数,很多人就会想到 Random,当出现生成随机数这样需求时,大多数人都会选择使用 Random 来生成随机 ...
- java中的.运算符_java中的各种运算符
1.算术运算符: 算术运算符也就是我们小学所学过的:+ - * /:还有取模运算符:%:取模运算符也就是求余的 运算: 运算形式:操作数 + 操作数:操作数 - 操作数:操作数 * 操作数:操作数 / ...
- 12 java中instanceof运算符的意义和用法
java中instanceof运算符的意义和用法 instanceof运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来标识该对象是否为特定类或者它的子类的一 ...
- 详细介绍Java中的运算符
Java中类型转换 不同类型的数据可以在一起运算,需要将他们转换为同一类型,就可以进行运算 Java类型转换的分类 隐式类型转换[自动类型转换] 小范围数据转大范围 byte->short-&g ...
- 关于java中位运算符的使用和理解
关于java中位运算符的使用和理解 &(按位与) ' & ' 符号的作用是对运算符的两侧以二进制表达的操作符按位进行'与'运算. 规则: 只有两个操作数对应位同为1时,结果为1,其余全 ...
- Java中的运算符——逻辑运算符详解
逻辑运算符主要包括逻辑与( & ),逻辑或( | ),逻辑异或( ^ ),短路与( && ),短路或( || ).所有逻辑运算符的特点是操作数都是布尔类型,并且最终的运算结果也 ...
- java中冒号运算符起什么作用呢?
转自: java中冒号运算符起什么作用呢? 下文笔者讲述java中冒号运算符的功能简介说明,如下所示: 冒号运算符的功能: 1.跳转2.三元表达式3.迭代循环4.断言5.switch6.方法(jdk8 ...
- Java中的运算符——赋值运算符详解
赋值运算符主要是这几种:=.+=.-=.*=./=.%=,其它和二进制相关的内容这里就不详细解释了.赋值类的运算符包括基本赋值运算符(=)和扩展的赋值运算符(+=.-=.*=./=.%=).我们来看一 ...
- java中JVM的原理【转】
一.java虚拟机的生命周期: Java虚拟机的生命周期 一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序.程序开始执行时他才运行,程序结束时他就停止.你在同一台机器上运行三个程序,就会 ...
- Java中的锁原理、锁优化、CAS、AQS详解
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:景小财 www.jianshu.com/p/e674ee68 ...
最新文章
- 用.NET创建Windows服务
- 隔壁组Leader降级了!从不pua,亲自写代码,自己加班也不让下属加班!
- ”舍得“大法:把自己的优点当缺点倒出去
- anaconda安装yolov3_YOLOv3_图像识别_神经网络_人工智能
- CSDN Github Markdown编辑常用功能符号补充
- Linux软件安装之YUM
- 如何选择c语言学习书籍
- 如果你不会扒谱,来吧,这款软件给你超能力
- 【网络安全】最全渗透学习攻略
- web打印网页指定区域
- STATA如何查看、改变文件的工作路径
- win11关闭开机密码的方法
- 局域网即时通讯软件_企业即时通讯软件需要符合哪些要求?
- Android 闹钟app 课程设计
- Android TextView、EditText显示输入法自带表情,记录一下
- Win11任务栏太宽了怎么办?教你一招快速修改任务栏大小
- mysql 不支持分区_MySQL分区表的局限和限制
- Unity协程的返回值
- Virustotal威胁猎捕
- Sqlmap速查表/功能移植/Python批量检测SQL注入