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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 一文弄懂罗斯蒙特644温度变送器接线

    一文弄懂罗斯蒙特644温度变送器接线罗斯蒙特644温度变送器分为单输入644H和双输入644S两种,昌晖仪表在本文介绍温度变送器644接线,大家学习一起罗斯蒙特644温度变送器接线的注意事项。问题1:下图①位置这四个端子是干什么的?问题2:下图②位置这三个端子是干什么的?问题3:下图③位置这三个端子是干什么的?问题4:下图④位置这个插针是干什么的?问题5:下图⑤位置拨盘L和H位置代表什么?问题6:上图⑥位置这两个端子是干什么的?结…

  • TiKV 性能参数调优[通俗易懂]

    TiKV 性能参数调优[通俗易懂]2019独角兽企业重金招聘Python工程师标准>>>…

  • 22款终端生产力工具,效率飞起!

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 译文:switowski.com/blog/favorite-cli-tools 程序员在搞开发时,终端CLI工具的…

  • js全局变量在其他方法中赋值后无法影响到该方法外的全局变量的值(奇葩问题)

    js全局变量在其他方法中赋值后无法影响到该方法外的全局变量的值(奇葩问题)做个笔记,以防忘记遇到一个奇葩问题(书写规范不会遇到此问题)问题描述:$(document).ready(function(){varstrCookie=document.cookie;username=”1″;if(strCookie){cookieVariables=strCookie.split(“;”);

  • Java SpringBoot下载文件超时

    Java SpringBoot下载文件超时#端口server.port=9098#server端的socket超时间(毫秒),使用值-1表示没有(即无限)超时,默认值为60000(即60秒)#Tomcat附带的标准server.xml将此值设置为20000(即20秒),除非disableUploadTimeout设置为false,否则在读取请求正文(如果有)时也会使用此超时server.connection-timeout=80000server.disableUploadTimeout=false…

  • Linux初窥:Linux下SSH免密码登录配置[通俗易懂]

    Linux初窥:Linux下SSH免密码登录配置[通俗易懂]目录环境设置(root权限)1.关闭防火墙和SELinux2.设置主机名3.配置hosts4.配置sshd秘钥设置1.创建免密码登录账户2.生成秘钥3.将公钥导入到认证文件4.设置文件访问权限5.将认证文件复制到其他主机假设有A、B两台Linux服务器,我们希望能够从其中一台服务器通过SSH免密码登录到另一台服务器。两台服务器的信息如…

    2022年10月23日

发表回复

您的电子邮箱地址不会被公开。

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