前言
我們都知道對于有符號數據類型,二進制最左端的數字為符號位,0代表正,1代表負,這里先介紹幾個概念
邏輯左移=算術左移:高位溢出,低位補0
邏輯右移:低位溢出,高位補0
算術右移:低位溢出,高位用符號位的值補
比如一個有符號位的8位二進制數10101010,[]是添加的數字
邏輯左移一位:0101010[0]
邏輯左移兩位:101010[00]
算術左移一位:0101010[0]
算術左移兩位:101010[00]
邏輯右移一位:[0]1010101
邏輯右移兩位:[00]101010
算術右移一位:[1]1010101
算術右移兩位:[11]101010
算術左移和算術右移主要用來進行有符號數的倍增、減半
邏輯左移和邏輯右移主要用來進行無符號數的倍增、減半
(JAVA中是沒有無符號數據類型的,C和C++中有)
public static void main(String[] args) { // 20 System.out.println(10 << 1); // -20 System.out.println(-10 << 1); // 5 System.out.println(10 >> 1); // -5 System.out.println(-10 >> 1); // 5 System.out.println(10 >>> 1); // 2147483643 System.out.println(-10 >>> 1); }
本文為小編原創文章,首發于Java識堂,一個高原創,高收藏,有干貨的微信公眾號,一起成長,一起進步,歡迎關注