精华内容
下载资源
问答
  • Java按位取反运算符“~”

    千次阅读 2018-12-13 10:04:50
    关于学习java中的按位取反(~)的问题 2013年07月16日 00:21:51 daokai1993 阅读数:1468 标签: 新手 之前不知道按位取反到底是怎么计算的 百度谷歌的半天 也没有什么具体的计算防暑 后来自己琢磨了一会儿 发现...

    关于学习java中的按位取反(~)的问题

    2013年07月16日 00:21:51 daokai1993 阅读数:1468 标签: 新手

    之前不知道按位取反到底是怎么计算的

    百度谷歌的半天    也没有什么具体的计算防暑    后来自己琢磨了一会儿 发现了一点按位取反的技巧  在此分享一下

    负数的取反 就是在原码的基础上取反码  然后在取补码(补码=反码+1)当反码的最后一位数已经为1的时候    补码再+1后就应该向前进一位

    例如十进制数: -6    -6在java中的原码为10000000 00000000 00000000 00000110   其反码为11111111 11111111 11111111 11111001 

    所以-6的补码就是11111111 11111111 11111111 11111010   再将补码取反就是~(-6)的二进制数:00000000 00000000 00000000 00000101 转换为10进制就是5.

    正数的原码=补码=反码

    正数的按位取反其实可以参照负数

    其计算方式可以按负数的逆思路直接推出

    比如说一个十进制数:5

    5的原码、反码、补码全部都是00000000 00000000 00000000 00000101   

    那么先将5的二进制数取反,并得到:11111111 11111111 11111111 11111010(把它看做是某个数的补码)

    然后再将得到某个数的补码(姑且称之为补码吧)-1

    就得到反码:11111111 11111111 11111111 11111001(因为补码最后一位数为0  所以往前一位“借数”,所以最后一位数为1)

    最后将反码译为原码:10000000 00000000 00000000 00000110   所以~(5)就为-6.

     

     

    注:以上纯属本人在探索过程中的个人理解,如果错误,希望大神指出!谢谢!

    以上内容转自:https://blog.csdn.net/smilecall/article/details/42454471

    展开全文
  • 说明:本文参考了文章《Java按位取反运算符“~”》,链接:https://blog.csdn.net/smilecall/article/details/4245447 补充:运算符(~、&、|、^,<<、>>)都是在补码(计算机存储的形式)上...

    说明:本文参考了文章《Java按位取反运算符“~”》,链接:https://blog.csdn.net/smilecall/article/details/4245447


     补充:位运算符(~、&、|、^,<<、>>)都是在补码(计算机存储的形式)上操作。(原答案如下)


     1.二进制数在内存中是以补码的形式存放的;补码首位是符号位,0表示此数为正数,1表示此数为负数

    如:
    正数9——>具有符号位的二进制原码01001(首位表示符号位)——>补码01001((第2条会讲补码怎么来的)——>在内存中的形式0***1001(*表示无效位,其数量取决于分配的内存空间

    负数-1——>具有符号位的二进制原码11(首位表示符号位)——>补码11(第2条)——>在内存中的形式1***1(*表示无效位)

    2. 正数、负数的补码是什么?

    ①正数的补码、反码都是其二进制本身,只是需要在首位填加0,作为符号位。

    如:

    正数9——>二进制01001(首位表示符号位的二进制形式)——>补码01001(不变)

    ②负数的反码:符号位1不变,后面有效位数全部取反(有效位是指该数的无符号二进制位,如9的有效位指1001,-1的有效位指1);

     负数的补码:其反码再加1得到,即原码通过符号位不变,且有效位按位取反再加1也可得到;

    如:

    负数-1——>二进制原码11——>反码10(符号位1不变,后面有效位数全部取反)

    负数-1——>二进制原码11——>补码11【反码的有效位加1(此处不考虑符号)或者是原码符号位不变,有效位按位取反再加1】
    3. 计算机输出内存数据方式
    将内存中的补码转换成原码,进行显示;
    例如:
    正数9——>内存中补码0***1001——>转换成原码0***1001(不变)——>输出+9
    负数-5——>内存中补码1***011——>转换成原码1***101(补码中符号位后面的有效位减1,再取反,即负数补码的逆过程)——>-5
    4. 按位取反运算符“~”的原理
    按位取反运算符是将内存中的补码按位取反(包括符号位)
    例如:
    9(在内存中以补码0***1001存放)——>按位取反操作“~”——>变成补码1***0110(这明显变成了一个负数补码,因为符号位是1)——>输出时:补码减1,再取反得到原码1***1010——>输出-10
    -1(在内存中以补码1***1存放)——>按位取反操作“~”——>变成补码0***0(这明显是正数补码,因为符号位是0)——>输出时:得到原码0***0——>输出0

    注:所有的取反操作、加1、减1操作,都在有效位进行;***代表的无效位,分析时不要管。

     

     

     

     

     

     

     

     

     

     

     

     

    转载于:https://www.cnblogs.com/pxb2018/p/9765849.html

    展开全文
  • Java按位取反运算符

    2019-04-08 19:07:57
    例如~6 先二进制求补码(数字都以补码进行运算)...取反:11111111 11111111 11111111 11111001(这是补码且是负数) 求反码:11111111 11111111 11111111 11111000 求源码:10000000 00000000 00000000 000001...

    例如~6

    • 先二进制求补码(数字都以补码进行运算)00000000 00000000 00000000 00000110(正数源码反码补码都一样)
    • 取反:11111111 11111111 11111111 11111001(这是补码且是负数)
    • 求反码:11111111 11111111 11111111 11111000
    • 求源码:10000000 00000000 00000000 00000111 (高位不变,其余位取反)这就是-7
    展开全文
  • 最近面试遇到了这样一道题: System.out.println(~(0Xaa)&0X5a); System.out.println(~(0X5a)&0Xaa); System.out.println(~1); ...System.out.println(~(-1));... 要写出结果,很郁闷,不会,望了解的大侠详解一下,...

    最近面试遇到了这样一道题:

    System.out.println(~(0Xaa)&0X5a);
    System.out.println(~(0X5a)&0Xaa);
    System.out.println(~1);
    System.out.println(~(-1));
    

     要写出结果,很郁闷,不会,望了解的大侠详解一下,谢谢!

    展开全文
  • Java中的取反运算符(~)

    万次阅读 2014-10-09 14:56:40
    ~是位运算符,意义是按位非(NOT)按位非也叫做补,一元运算符NOT“~”是对其运算数的每一位取反。例如,数字42,它的二进制代码为:00101010经过按位非运算成为11010101 优先级按位运算符的优先级,在运算符中...
  • 负数的反码是在原码基础上符号位不变,其他位按取反,负数补码是在反码基础上加一 例子1:求~10(byte类型) byte a = 10; 原码,补码,反码: 00001010 按位取反后 11110101 再将补码转换成源码,由于负数生成...
  • JAVA按位取反运算

    千次阅读 2018-09-29 11:03:14
    运算是对操作数以二进制为单位的进行的运算,运算符则用于运算。...这个符号为按位取反运算符按位取反的运算规则为0变成1,1变成0. [0-&amp;gt;1,1-&amp;gt;0] 有这么一个题:1.求~9的结果是什么 ...
  • Java 按位操作运算符

    2017-08-31 10:52:56
    按位操作符Java中所有的按位操作符,都是在二进制上进行操作的,而且是有... 按位取反运算符 & 逻辑与运算符 ^ 异或运算符 I 逻辑或运算符 测试代码public class Test { public static void main(String[] args)
  • int result = 2 >3 ? 1+1 : 2+2; // result = 4; //为假执行2+2 int result = 4 >3 ? 1+1 : 2+2; // result = 2; //为真执行1+1
  • 取反运算符

    2020-11-11 23:00:15
    在计算机中操作的是补码 对6取反(~6) ...计算机只能对补码操作,那么对6取反(~6),实际操作的是补码,每位取反 6的补码全部取反 1111 1111 1111 1111 1111 1111 1111 1001 (得到的这个数是最高为代表负数
  • 移位运算代码如下: package SimpleGrammar; /** * * @author jaloli * * (1)负数存储:java 等同于机器,都是用补码存,补码的规矩, * 负数 -2 ,原码为 ... * 补码是符号不变,各位取反+1,补码为 111111111
  • 一直纠结于运算中的 按位取反 以及原码、反码、补码之间的...(按位与)、|(按位或)、^(按位异或)、~(按位取反)等等…位运算符操作数可以是整型或字符型,结果为整型。按位取反是对补码进行运算,当运算完后,再将补...
  • Java中,数据以补码形式来存放并操作。 &gt;原码:数据对应的二进制形式就是这个数据的原码。  原码首数字为符号,0为正,1为负。 /*为什么要引入反码和补码? 原码的加减法得出结果和十进制原数的...
  • JAVA按位运算符

    千次阅读 2019-05-24 16:21:25
    java按位运算符 运算符 算法 &(与) 如果相对应都是1,则结果... 按位取反运算符翻转操作数的每一,即0变成1,1变成0。 << (左移) 按位左移运算符。左操作数按位左移右操作数指定...
  • 如果条件为true,取反则为false;如果条件为false,取反则为true public class operator { public static void main(String[] args) { System.out.println(60 > 20); // true System.out.println(!(60 > 20)...
  • “~”运算符在c、c++、java、c#中都有,之前一直没有遇到这个运算符,今天碰到一道笔试题,经过学习,终于搞懂了。要弄懂这个运算符的计算方法,首先必须明白二进制数在内存中的存放形式,二进制数在内存中是以补码...
  • Java 取反~运算符疑惑

    2014-03-10 09:23:10
    直接上代码 public class BitOperatorTest { public static void main(String[] args) { int aNum = 144;... System.out.println("The result of aNum | bNum is " + (aNum | bNum));...
  • java按位运算符

    2020-03-14 13:14:02
    java按位运算符(操作符)         最近在看源码时,发现一些java基础有些记不清了。今天来回忆,整理一下。         按位运算符是来操作整数基本数据类型中的...
  • Java教程Java 定义的运算(bitwise operators)直接对整数类型的进行操作,这些整数类型包括 long,int,short,char 和 byte。...Java 语言中的位运算符分为逻辑运算符和位移运算符两类,...
  • Java常用按位运算符

    2012-03-25 14:51:28
    首先,解释下什么是按位运算。...Java提供的常用按位运算符: 1、按位运算符(&): 1 & 1 = 1; 1 & 0 = 0; 0 & 1 = 0; 0 & 0 = 0;即只有当参与运算的两个对应二进制都为1的情况下结果才为1
  • Java按位运算符

    2020-06-18 18:57:25
    位运算符主要针对二进制,它包括了:“非”(~)、“与”(&)、“或”(|)、“异或”...1、按位非(~)“~”运算符的优先级比算术运算符、关系运算符、逻辑运算符和其他运算符都高。 将二进制的数字每一全部
  • Java基础~位运算符

    2017-10-10 11:02:22
    与运算,|或运算,^异或运算,~按位取反运算符 一个数据对另一个数据异或两次,这个数据的值不变 交换两个数据的最高效方式: a = a ^ b; b = a ^ b; // a ^ b ^ b = a a = a ^ b; // a ^ b ^ a = b ...
  • Java 语言中的位运算符分为逻辑运算符和位移运算符两类,下面详细介绍每类包含的运算符逻辑运算符 逻辑运算符包含 4 个:&(与)、|(或)、~(非)和 ^(异或)。除了 ~(即位取反)为单目运算符外...
  • “#Java运算符” &lt;1&gt;计算机的基本编码知识: 源码,反码,补码 ①计算机的这些编码是转换成二进制进行运算的 ②正数的源码,反码,补码均相同 ③关于负数的源码,反码,补码 (补码是计算机数字存储...
  • java基础_位运算符

    2017-05-22 17:36:01
    &与运算,|或,^异或,~按位取反, > ,>>> 注意:使用位运算符首先把数据转换成二进制数。 package com.lcn.day03; public class OpreatorDemo5 { /** * @param args */ public static void ...
  • java中的位运算符

    2019-11-01 16:28:25
    关于java中的位运算符 萌新小白,第一篇博客,多多指教 记录下自己的学习过程 位运算符用来对二进制进行操作,Java中提供了下面的位运算符:运算符中,除 ~ 以外,其余均为二元运算符。操作数只能为整型和字符型...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,859
精华内容 7,543
关键字:

java按位取反运算符

java 订阅