java按位取反运算符_二进制按位取反

java按位取反运算符_二进制按位取反“~”运算符在c、c++、java、c#中都有,要弄懂这个运算符的计算方法,首先必须明白二进制数在内存中的存放形式,二进制数在内存中是以补码的形式存放的。另外正数和负数的补码不一样,正数的补码,反码都是其本身,既:正数9(二进制为:1001)在内存中存储为01001,必须补上符号位(开头的0为符号位)。补码为01001反码为01001,其中前面加的0是符号位,负数的

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

“~”运算符在c、c++、java、c#中都有,要弄懂这个运算符的计算方法,首先必须明白二进制数在内存中的存放形式,二进制数在内存中是以补码的形式存放的。


另外正数和负数的补码不一样,正数的补码,反码都是其本身,既:

正数9(二进制为:1001)在内存中存储为01001,必须补上符号位(开头的0为符号位)。

补码为01001

反码为01001,其中前面加的0是符号位,负数的符号位用1表示


负数-1(二进制为:0001)在内存中存储为10001,开头的1为符号位,在内存中存放为,11111(负数的补码是:符号位不变,其余各位求反,末位加1)既得到11111。

补码为11111

反码为11110


负数的补码是:符号位不变,其余各位求反,末位加1 ,既-1的补码为11111

反码是:符号位为1,其余各位求反,但末位不加1 ,既-1的反码为11110


也就是说,反码末位加上1就是补码


————————————————————————————————————————————


弄懂了上述情况后,如何计算就好办了


假设有一个数~9,计算步骤如下,9的二进制为:1001


其补码为01001

对其取反10110(“~”运算符取反后得到这个数),现在需要换成二进制原码用来输出,既先减1,然后取反得11010,符号位为1是负数,既9使用了按位运算符“~”后得到-10。


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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170467.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 360天擎无密码退出和卸载一样吗_奇安信天擎退出密码

    360天擎无密码退出和卸载一样吗_奇安信天擎退出密码无密码退出删除配置(360Safe\EntClient\conf\EntBase.dat)**注:**删除时提示权限不够无法删除,使用360自带的文件粉碎机将文件粉碎即可无密码退出360天擎(重新打开程序时EntBase.dat会再次生成)修改配置(将EntBase.dat中uipass、qtpass两项值置空)**注:**修改时提示权限不够无法修改,需先关闭【设置】【防护中心】【自我保护】功能卸载只能通过修改配置(将EntBase.dat中uipass、qtpass两项值置空)

    2022年9月25日
    4
  • Netty入门_合并财务报表应用指南

    Netty入门_合并财务报表应用指南Netty入门应用回顾NIO开发步骤一、依赖二、NettyTimeServer三、NettyTimeServerHandler四、NettyTimeClient五、NettyTimeClientHandler回顾NIO开发步骤创建ServerSocketChannel,配置为非阻塞模式。绑定监听,配置TCP参数,例如backlog大小。创建一个独立的I/O线程,用于轮询多路复用器Selector。创建Selector,将之前创建的ServerSocketChannel注册到Selecto

    2022年10月2日
    4
  • listView1.Items.Add()与 listView1.Items[i].SubItems.Add()区别

    listView1.Items.Add()与 listView1.Items[i].SubItems.Add()区别listView1.Items是ListViewItem的集合打开资源管理器,看看windows目录,使用Details方式,一个ListViewItem就是一行,比如目录名称,修改时间,类型,大小,这整个一条记录是一个ListViewItem而listView1.Items[i].SubItems是ListViewSubItem的集合比如刚才的目录名称或

    2022年7月26日
    6
  • 【计算机网络(微课版)】第3章 数据链路层 课后习题及答案

    【计算机网络(微课版)】第3章 数据链路层 课后习题及答案3-1数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与“数据链路接通了”的区别何在?(1)数据链路与链路的区别在于——数据链路除链路外,还必须有一些必要的规程来控制数据的传输。因此,数据链路比链路多了实现通信规程所需要的硬件和软件。(2)“电路接通了”表示链路两端的结点交换机已经开机,物理连接已经能够传送比特流了。但是,数据传输并不可靠。在物理连接…

    2022年7月21日
    19
  • 滤波算法(四)—— 卡尔曼滤波算法[通俗易懂]

    滤波算法(四)—— 卡尔曼滤波算法[通俗易懂]一、算法介绍卡尔曼滤波是一个神奇的滤波算法,应用非常广泛,它是一种结合先验经验、测量更新的状态估计算法。1、状态估计首先,对于一个我们关心的物理量,我们假设它符合下面的规律其中,为该物理量本周期的实际值,为该物理量上一个周期的实际值,当然这个物理量可能不符合这个规律,我们只是做了一个假设。不同的物理量符合的规律不同,是我们的经验,我们根据这个规律…

    2022年6月13日
    30
  • 20道经典Redis面试题

    20道经典Redis面试题前言整理了 20 道经典 Redis 面试题 希望对大家有帮助 1 什么是 Redis 它主要用来什么的 Redis 英文全称是 RemoteDictio 远程字典服务 是一个开源的使用 ANSIC 语言编写 支持网络 可基于内存亦可持久化的日志型 Key Value 数据库 并提供多种语言的 API 与 MySQL 数据库不同的是 Redis 的数据是存在内存中的 它的读写速度非常快 每秒可以处理超过 10 万次读写操作 因此 redis 被广泛应用于缓存 另外 Redis 也经常用来做分布式锁

    2025年8月31日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号