java按位取反运算符_java源码补码

java按位取反运算符_java源码补码一直纠结于位运算中的按位取反以及原码、反码、补码之间的各种关系,反正各种混淆各种懵逼。经过一小段时间才弄明白这个别人觉得很容易的问题。可能还是我基础不太好。位运算是对操作数以二进制为单位的进行的运算,位运算符则用于位运算。位运算符包括&(按位与)、|(按位或)、^(按位异或)、~(按位取反)等等…位运算符操作数可以是整型或字符型,结果为整型。按位取反是对补码进行运算,当运算完后,再将补…

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

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

一直纠结于位运算中的 按位取反 以及原码、反码、补码之间的各种关系,反正各种混淆各种懵逼。经过一小段时间才弄明白这个别人觉得很容易的问题。可能还是我基础不太好。

位运算是对操作数以二进制为单位的进行的运算,位运算符则用于位运算。位运算符包括&(按位与)、|(按位或)、^(按位异或)、~(按位取反)等等…位运算符操作数可以是整型或字符型,结果为整型。

按位取反是对补码进行运算,当运算完后,再将补码变回原码。

~ 这个符号为按位取反运算符。按位取反的运算规则为0变成1,1变成0. [0->1,1->0]

有这么一个题:1.求~9的结果是什么

解:9的二进制数表示 0000 1001

9的原码 0000 1001

9的反码 0000 1001

9的补码 0000 1001

按位取反操作 1111 0110

变为原码先减一 1111 0101

再取反 1000 1010 (-10)

2.求~-9的结果

-9的二进制数表示 1000 1001

-9的原码 1000 1001

-9的反码 1111 0110

-9的补码 1111 0111

按位取反操作 0000 1000

变为原码 0000 1000 (8) 因为正数的补码、反码、原码都是一个样。

假如9的类型是char型,char类型占一个字节,一个字节等于八位二进制数,所以它的数据宽度为八位二进制数(0000 0000)。最高位,也就是最左边的0为符号位:0表示正数,1表示负数。

9用二进制数存储在内存中为:0000 1001 (原码)这就是原码

而9为正数,它的原码、反码、补码都是同一个,都是 0000 1001

按位取反时,需要对所有的二进制数取反。 按位取反后变成 1111 0110 此时的二进制数为补码,而且是负数(因为最高位为1,表示为负数),就需要将其变为原码,补码变为原码,怎么变呢,首先先减1,此时变为 1111 0101,然后再变为原码(变为原码时,符号位不变)1000 1010(原码),此时的原码就是这个,它就是-10.所以~9=-10.

说一说原码、反码、补码。

-5,若数据宽度为8位。

-5的原码用二进制数表示是 1000 0101

反码就是除符号位,其余位数,将0变成1,将1变成0.

5的反码: 1111 1010

补码就是将0变成1,1变成0后再加1.

5的补码: 1111 1011

而正数的原码、反码、补码都是本身

5的原码 0000 0101

5的反码 0000 0101

5的补码 0000 0101

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

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

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


相关推荐

  • Python开发 之 Python3读写Excel文件(较全)[通俗易懂]

    Python开发 之 Python3读写Excel文件(较全)[通俗易懂]Python读写Excel文件用xlrd包读取Excel文件用xlrd包读取Excel文件用法比较简单。importxlrdimportxlwtimportopenpyxlfromdatetimeimportdate,datetimearrayNum=6#array={‘L1′:”,’L2′:”,’L3′:”,’L4′:”,’Question’:”,…

    2022年10月2日
    3
  • pytest的assert_java断言assert

    pytest的assert_java断言assert前言断言是写自动化测试基本最重要的一步,一个用例没有断言,就失去了自动化测试的意义了。什么是断言呢?简单来讲就是实际结果和期望结果去对比,符合预期那就测试pass,不符合预期那就测试failed

    2022年7月30日
    7
  • java之接口[通俗易懂]

    java之接口[通俗易懂]java之接口1、接口的概念2、接口的属性3、接口与抽象类4、静态和私有方法5、默认方法6、解决默认方法冲突7、接口与回调1、接口的概念在java中,接口不是类,而是对符合这个接口的类的一组需求接口用interface声明声明一个Comparable接口可以将接口看成一个没有实例字段的抽象类publicinterfaceComparable{ 声明一个方法,方法的实现由实现这个接口的类来实现方法 接口绝不会有示例字段,在java8以前,在接口中绝对不会实现 方法。 priv

    2022年7月7日
    25
  • matlab plot颜色代码_matlab改图像背景颜色

    matlab plot颜色代码_matlab改图像背景颜色通常有两种方法: 使用预置的颜色代码 ‘r’红色’m’粉红’g’绿色’c’青色’b’兰色’w’白色’y’黄色’k’黑色 使用颜色数组 plot(x,y,’color’,[0.10.20.3])%颜色数组三个元素都在0~1之间

    2022年10月16日
    1
  • Autoconf简介「建议收藏」

    Autoconf简介「建议收藏」Autoconf是一个用于生成shell脚本的工具,可以自动配置软件源代码以适应多种类似POSIX的系统。为了让你的软件包在所有的不同系统上都可以进行编译。GNU构建系统Autoconf解决了系统特使构建和运行时信息的难题,但在软件开发时还有更多的难题,GNU构建系统是为了更好的开发软件而开发的一套完整的公益事业。主要组成部分有Autoconf、Automake和Libtool。Auto…

    2022年5月4日
    39
  • uint32-t_c语言uint32_t类型

    uint32-t_c语言uint32_t类型uint32_tu:代表unsigned即无符号,即定义的变量不能为负数;int:代表类型为int整形;32:代表四个字节,即为int类型;_t:代表用typedef定义的;整体代表:用typedef定义的无符号int型宏定义;uint8_t:u:代表unsigned即无符号,即定义的变量不能为负数;int:代表类型为int整形;8:代表一个字节…

    2025年9月29日
    5

发表回复

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

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