博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
位运算
阅读量:5964 次
发布时间:2019-06-19

本文共 2471 字,大约阅读时间需要 8 分钟。

位运算:

  注意的规则:

    01.整数的 三个码都是一致的,不需要转换
    02.负数必须转换成补码才能运算!
    03.计算机真正参与运算的是 补码!
    04.在java中所有的数字都是有符号的! 符号位 0 正数 1负数
    05.符号位就是最高位也是最左边的一位!
    06.负数的反码=符号位不变+其他位取反(1变0 0变1)
    07.负数的补码=反码+1 

 

算术的右移 和 算术 左移

  算术的右移:
    01.符号位不变
    02.低位溢出删除
    03.高位补零!

1 10 >> 1 10的2进制数字 右移一位 2  3 >>:位移的方向 4 1 :位移的位数 5  6 首先找到10的2进制 7  8 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 ====》10的2进制 9 >>1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 ====》右移1位的结果10 ==================================================================11 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 ==》512 13 14 -1 >> 115 首先找到-1的2进制16 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 ==>-1的2进制 原码17 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 ==>-1的2进制 反码18 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ==>-1的2进制 补码 19 >> 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 120 ================================================================21 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ===》-1的补码22 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 ===》-1的反码23 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 ===》原码 -124 25

  算数左移:

    01.符号位不变
    02.高位溢出删除
    03.低位补零!

1 << 40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 ===》1的补码0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 ========================================================================0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 ==>结果16

  逻辑右移, 没有逻辑左移! >>>

    01.不管符号位;
    02.地位溢出删除;
    03.高位补0

-1 >>> 1 -1逻辑右移1位1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 ===》-1的原码1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 ===》-1的反码1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ===》-1的补码>>> 1============================================================ 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ===》-1的逻辑右移1位2147483647 int类型的最大值

位运算: &  |    ^  ~

  01. & 按位与 :两位都是1,结果是1

3&40 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 & 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 ===========================================0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

  02.| 按位或 :两位有一位是1,结果是1

3|40 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 | 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 ===========================================0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1

  03.^ 按位异或 :两位必须是一个为0,一个为1,结果才是1

3^40 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 ^ 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 ===========================================0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1

  04.~ 按位取反,只能是一个表达式使用

    正数的按位取反= 自身的负数 -1
    负数的按位取反= 自身的绝对值 -1

 

    ~x   =====>    - (x+1)

~3   =====>    -40 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 ~ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 ==》结果的补码==================================================== 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 ==》结果的反码1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 ==》结果的原码======================================================= -4

 

转载于:https://www.cnblogs.com/ak666/p/8125124.html

你可能感兴趣的文章
Oracle——条件控制语句
查看>>
[Linux][Redis][05]Benchmark
查看>>
第一次作业-准备篇
查看>>
HDU1848 Fibonacci again and again
查看>>
HTML思维导图
查看>>
office2016选择性安装
查看>>
C# 自定义控件入门
查看>>
git改密码出现授权问题
查看>>
Hadoop IO 特性详解(2)
查看>>
ORA-02266: 表中的唯一/主键被启用的外键引用
查看>>
MySQL类型转换 使用CAST将varchar转换成int类型排序
查看>>
Django的POST请求时因为开启防止csrf,报403错误,及四种解决方法
查看>>
Apache common-fileupload用户指南
查看>>
day-6 and day-7:面向对象
查看>>
IE维护(IEM)策略不再适用于IE10及后续IE版本
查看>>
Java7中的ForkJoin并发框架初探(下)—— ForkJoin的应用
查看>>
java中的重量级与轻量级概念
查看>>
Linux设备驱动工程师之路——硬件访问及混杂设备LED驱动
查看>>
进程和线程<一>
查看>>
远程算数程序——版本v1.0
查看>>