zoukankan      html  css  js  c++  java
  • ~ 非运算操作

    java ~ 非运算操作

    看源码ThreadPoolExecutor 源码时,看到了这么一段

    ~ 非运算符自己编程的时候用的比较少,于是就验证了一下这个运算符。

    
    //https://blog.csdn.net/wenxinwukui234/article/details/42119265   关于补码,我的总结是:  补码巧妙的运用了“进位丢失” 使得补码运算满足  -x + x  = 0 ,这样计算机可以只进行加法运算 不用额外引入减法逻辑,提高运算效率。
    public static void main(String[] args) {
        System.out.println(~(-6) );// ~ 非运算后的 结果 5
        System.out.println(~(0) );//-1
        System.out.println(~(3) );//-4
    
        // 将数字转换成二进制表示,计算机表示二进制数字 使用的是补码。
        // 正数的补码就是原码。  对于负数:   补码 = 原码除了符号位之外 各位取反 + 1   .  原码 = 补码除了符号位之外 各位取反 + 1
        System.out.println( Integer.toBinaryString(-6)); // 打印的值,即-6的补码      11111111111111111111111111111010
        System.out.println(Integer.toBinaryString(0)); // 0
        System.out.println(Integer.toBinaryString(3));//11
    
    
    }
    

    //对  11111111111111111111111111111010   各位取反  得到 00000000000000000000000000000101   既可得到 5 的补码 。(也是5原码)
    //对  0 各位取反 得到     11111111111111111111111111111111  是一个补码 , 然后除了符号位 各位取反后+1 得到 10000000000000000000000000000001   (即是 -1的原码)
    // 对 00000000000000000000000000000011 各位取反得到 11111111111111111111111111111100    取反+1 得到    10000000000000000000000000000100 (即-4 的原码)  
    // 总结:  ~  非运算 ,即对 一个数字的二进制(计算机用补码表示数字)  进行各位取反。   最终这个获取的值表示哪一个数字 则需要对结果再求其相应的原码 才能看出来。
    
  • 相关阅读:
    ios添加第三方字体
    IOS 适应各种iphone屏幕尺寸
    sqlite第三方类库FMDB的使用
    IOS--沙盒机制
    用plist建立UITabController
    Xcode7 使用NSURLSession发送HTTP请求报错[转]
    网络开发--NSURLConnection类的简单介绍
    TF-IDF
    《汇编语言》——王爽 第12章 内中断
    操作系统 L4操作系统接口+L5系统调用的实现(网易公开课)
  • 原文地址:https://www.cnblogs.com/paidaxing7090/p/15205603.html
Copyright © 2011-2022 走看看