按位取反~运算_按位与按位或按位异或运算符

按位取反~运算_按位与按位或按位异或运算符按位取反~运算首先我们来看按位取反的概念按位取反运算符:对数据的每个二进制位取反,即把0变成1,把1变成0.即~x=-x-1这里按照定义9的二进制为00001001其按位取反为11110110结果为-10这个过程没有任何问题,但是如果忘记了负数的二进制表达方式,就会对这个结果产生疑问,为什么11110110表示-10而不是503?理解按位取反的关键是理解11110110为什么表示-10,也就是负数的二进制表达方式。现在计算机普遍使用补码表示负数。知道补码,求源码的方式是:值取反再加1。

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

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

按位取反~运算


首先我们来看按位取反的概念

按位取反运算符:对数据的每个二进制位取反,即把0变成1,把1变成0.

即~x=-x-1

这里按照定义

9的二进制为00001001
其按位取反为11110110
结果为-10

这个过程没有任何问题,但是如果忘记了负数的二进制表达方式,就会对这个结果产生疑问,为什么11110110表示-10而不是503?理解按位取反的关键是理解11110110为什么表示-10,也就是负数的二进制表达方式。

现在计算机普遍使用补码表示负数。

知道补码,求源码的方式是:值取反再加1。
补码的第一位符号位决定了源码的正负,第一位为0源码为正,第一位为1源码为负。

现在我们可以理解上面那个例子,9按位取反后得到11110110,其第一位为1,源码为负值。
取反后为00001001,再加1得00001010,其值为10,再加上负号即为-10。

也即 ~9=-10

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

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

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


相关推荐

  • 单周期CPU中的指令周期就是一个时钟周期_指令周期和时钟周期的关系

    单周期CPU中的指令周期就是一个时钟周期_指令周期和时钟周期的关系指令周期: CPU每取出并执行一条指令所需的全部时间叫指令周期,也即CPU完成一条指令的时间叫指令周期一般一条完整的指令包括:取指周期、间址周期、执行周期、中断周期。JMPX:该指令的指令周期只有取指周期。ADDX:该指令只有取指周期、执行周期。一个指令周期包含的机器周期个数亦与指令所要求的动作有关,如单操作数指令,只需要一个取操作数周期,而双操作数指令需要两个取操作数周期。实…

    2022年10月13日
  • linux内核源码下载地址[通俗易懂]

    linux内核源码下载地址[通俗易懂]官网链接:https://www.kernel.org/HTTP https://www.kernel.org/pub/ GIT https://git.kernel.org/ 官网下载经常速度太慢,无法下载,提供另一个链接:http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/可以根据需要,下…

    2022年7月23日
  • Sql Decimal

    Sql Decimal近日调用一个存储过程时发现,Decimal类型的数据都被截成整型的,被搞得莫名其妙,尿水直流。没办法从SQL的数据类型、精度、存储过程一步步排查,最终发现是asp.net调用存储过程的参数问题。一般情

    2022年7月4日
  • java calendar 日期实现不断加一天

    java calendar 日期实现不断加一天Calendarcc=Calendar.getInstance();//获得系统时间cc.add(cc.DATE,1);//让日子每天向后加一天 date=cc.getTime();   //这个时间就是系统时间加一天后的

    2022年5月20日
  • python 之 函数

    什么是函数引言现在有这么个情况:假设我们python中的len方法不可以使用了,而恰好你又要计算一个字符串的长度你该怎么办呢?有人说:‘简单,可以使用for循环嘛s1="hello

    2022年3月29日
  • Java 拦截器

    Java 拦截器一、引言  既然要用拦截器,首先先得简单了解一下什么是拦截器:  概念:java里的拦截器是动态拦截Action调用的对象,它提供了一种机制可以使开发者在一个Action执行的前后执行一段代码,也可以在一个Action执行前阻止其执行,同时也提供了一种可以提取Action中可重用部分代码的方式。  作用域:动态拦截Action调用的对象(也就是我们的controller层)  我们日常开发中,经常会遇到这个场景:在访问系统功能前,需要用户登录,不登陆的话无法使用我们的系统,那么如果在每个方法

    2022年6月9日

发表回复

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

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