• 计算机逻辑运算总结


    在计算机二进制中,最高位表示符号位,若为0表示正数,若为1表示负数。同时我们需要清楚知道原码、反码、补码的概念,这里请自行了解。

    取非/反(~):在二进制补码中,要获取数字的负数,需反转所有位并加1。比如(~-5),5是00000101,那么-5则是:11111010 + 00000001 = 11111011,然后再取(~)是00000100,所以结果为4。若是正数,则其补码是其本身,比如(~5),5是00000101,那么直接取(~),所以结果为11111010,其实这个值就是6的补码即-6。比如如下例子:

    ~(-3) = 2
    ~(-2) = 1
    ~(-1) = 0
    ~0 = -1
    ~1 = -2
    ~2 = -3

    由上我们可总结出:~x = -x - 1。

    左移(<<):给定数据乘以2的位数次幂。例如11<<2(11 * 2^2 = 44)

    有符号右移(>>):进行向右移位后,将最左边的符号位(Most Significant Bit MSB)填充到最左边的位,这称为符号扩展,当向右移动负数时,它可以保留负号的符号。若为正数,则结果为给定数据除以2的位数次幂并舍去模。例如11>>2(11/2^2 = 2),若为负数,则结果为根据正数的结果取负数并减1,也就是(-x-1)。

    无符号右移(>>>):有符号右移保留符号位,而无符号位右移则是不保留以0进行填充,也就是无符号右移主要是针对正数,此时结果和有符号右移中的数据不带符号一致。

  • 相关阅读:
    阿里云主机如何重装系统?
    Linux下mysql新建账号及权限设置
    Ahead-of-time compilation(AOT)
    XBOX ONE游戏开发常见问题
    云计算之路-阿里云上:RDS用户的烦恼
    数字证书原理
    《你不常用的c#之二》:略谈GCHandle
    批处理文件指定jre路径启动java桌面应用程序
    关于OAUTH2.0的极品好文
    第一天接触Orchard
  • 原文地址:https://www.cnblogs.com/CreateMyself/p/12643051.html
Copyright © 2020-2023  润新知