之前一直被移位所困扰着,不知大家是否也有这样的感慨呢?
经过我的不懈努力终于明白了其中的小窍门,现在请允许我悄悄的告诉大家!
移位:
要介绍移位当然事先要将听起来高大上的原码、反码和补码提一提。
原码:正整数的二进制数,对于负数而言来说绝对值的补码才是原码。
反码:在原码的基础上0和1互换。
补码:在反码的基础上加1。
正整数左移:(加大)首先求出原码,然后左移位数,在求值。
负整数左移:(减少)首先求绝对值的补码,然后左移,减一位变成补码,再变成反码,最后求值。
正整数右移:(减小)首先求原码,然后右移,再求值。(若是奇数求出来是-3.45,那就取-4,若是3.45那就取3)
负整数右移分为两种情况:(增大)
情况一 有符号:首先求绝对值的补码,然后右移,减一位求补码,再求反码,最后求值。
情况二 无符号:首先求绝对值的补码,然后右移,若最高位是1,则变为0,减1变为补码,在变成反码。共有32位。