zoukankan      html  css  js  c++  java
  • java原码,反码,补码 位运算

    原码是什么?
    反码是什么?
    补码是什么?

    原码:
    正数:正数转换为二进制位就是这个正数的原码
    负数:负数的绝对值转换成二进制位然后在高位补1就是这个负数的原码

    int 2 原码:
    00000000 00000000 00000000 00000010
    int -2 原码:
    10000000 00000000 00000000 00000010

    00000000 00000000 00000000 00000011 # 3原码
    10000000 00000000 00000000 00000011 # -3原码

    反码:
    正数的反码就是原码
    负数的反码等于原码除符号位以外所有的位取反

    00000000 00000000 00000000 00000011 #3反码
    11111111 11111111 11111111 11111100 # -3反码


    补码:
    正数的补码与原码相同,
    负数的补码为 其原码的反码,然后最低位加1

    00000000 00000000 00000000 00000011 #3补码
    11111111 11111111 11111111 11111101 # -3反码


    总结:
    正数的原码, 反码, 补码 都一样.
    负数的原码, 反码, 补码 都不一样.
    符号位 + 二进制位

    int -1的原码,反码,补码:
    10000000 00000000 00000000 00000001
    11111111 11111111 11111111 11111110
    11111111 11111111 11111111 11111111

    位运算:
    正数有符号右移: 高位通通补0
    负数有符号右移: 换算成补码后右移,高位通通补1
    无符号右移: 无论正数,负数, 高位通通补0, 所以出现负数变成正数, 依然是补码运算,只是高位补0.

    -1 >> 1 # -1
    -1 >>> 32 # -1
    -1 >>> 31 # 1

  • 相关阅读:
    [ZJOI2006]书架
    [NOI2005]维护数列
    Python 最佳实践
    python中使用多继承
    python 抽象类、抽象方法的实现
    30个有关Python的小技巧
    一行 Python 实现并行化 -- 日常多线程操作的新思路
    python日志模块logging
    在Python中怎么表达True
    有趣的库:pipe(类似linux | 管道)库
  • 原文地址:https://www.cnblogs.com/smileblogs/p/12594778.html
Copyright © 2011-2022 走看看