java 直观的位移运算例子

java 位移运算,先出【运算结果】,不懂的可以运行程序:

 

6的二进制是: 110

6进行左移两位运算后结果是:11000,也就是24,可以看出来,正数的左移N位就是在右边末尾加N个0

 

-33的二进制是: 11111111111111111111111111011111

-33进行左移两位运算后结果是:11111111111111111111111101111100,也就是-132,可以看出来,负数的左移N位就是在右边末尾加N个0,为了保持位数不变,高位直接舍去

 

124的二进制是: 1111100

124进行右移两位位位运算后结果是:11111,也就是31可以看出正数右移就是在高位补0,然后为保持位数不变,低位舍去对应位数

 

-124的二进制是: 11111111111111111111111110000100

-124进行右移两位位位运算后结果是:11111111111111111111111111100001,也就是-31

 

124的二进制是: 1111100

124进行右移三位位移运算后结果是:1111,也就是15可以看出如果移位的位数过多会直接舍去最低位

 

-45的二进制是: 11111111111111111111111111010011

-45进行右移19位有符号位移运算后结果是:11111111111111111111111111111111,也就是-1,可以看出来,无符号负数位移是高位补1

-45进行右移19位 无符号 位移运算后结果是:1111111111111,也就是8191,可以看出来,无符号位移是即使是负数高位也是补0

 

代码如下:

 

Java代码   收藏代码
  1. package com.hxw.T2;  
  2.   
  3. public class ShiftOperate {  
  4.   
  5.     /** 
  6.      * @param args 
  7.      */  
  8.     public static void main(String[] args) {  
  9.         // 每个int整数是32位我们二进制用0000 0000 0000 0000 0000 0000 0000 0000 来表示0  
  10.           
  11.         //0000 0000 0000 0000 0000 0000 0000 0110  表示6  
  12.         System.out.println("6的二进制是: "+Integer.toBinaryString(6));  
  13.         System.out.println("6进行左移两位运算后结果是:"+(Integer.toBinaryString(6<<2))+",也就是"+(6<<2)+",可以" +  
  14.                 "看出来,正数的左移N位就是在右边末尾加N个0");  
  15.         System.out.println();  
  16.           
  17.         System.out.println("-33的二进制是: "+Integer.toBinaryString(-33));  
  18.         System.out.println("-33进行左移两位运算后结果是:"+(Integer.toBinaryString(-33<<2))+",也就是"+(-33<<2)+",可以" +  
  19.                 "看出来,负数的左移N位就是在右边末尾加N个0,为了保持位数不变,高位直接舍去");  
  20.         System.out.println();  
  21.           
  22.           
  23.         System.out.println("124的二进制是: "+Integer.toBinaryString(124));   
  24.         System.out.println("124进行右移两位位位运算后结果是:"+(Integer.toBinaryString(124>>2))+",也就是"+(124>>2)+"可以" +  
  25.                 "看出正数右移就是在高位补0,然后为保持位数不变,低位舍去对应位数");  
  26.         System.out.println();  
  27.           
  28.         System.out.println("-124的二进制是: "+Integer.toBinaryString(-124));   
  29.         System.out.println("-124进行右移两位位位运算后结果是:"+(Integer.toBinaryString(-124>>2))+",也就是"+(-124>>2));  
  30.         System.out.println();  
  31.           
  32.         System.out.println("124的二进制是: "+Integer.toBinaryString(124));   
  33.         System.out.println("124进行右移三位位移运算后结果是:"+(Integer.toBinaryString(124>>3))+",也就是"+(124>>3)+"可以看出如果移位的位数过多会直接舍去最低位");  
  34.         System.out.println();  
  35.           
  36.         System.out.println("-45的二进制是: "+Integer.toBinaryString(-45));   
  37.         System.out.println("-45进行右移19位有符号位移运算后结果是:"+(Integer.toBinaryString(-45>>19))+",也就是"+(-45>>19)+",可以看出来,无符号负数位移是高位补1");  
  38.         System.out.println("-45进行右移19位 无符号 位移运算后结果是:"+(Integer.toBinaryString(-45>>>19))+",也就是"+(-45>>>19)+",可以看出来,无符号位移是即使是负数高位也是补0");  
  39.           
  40.         System.out.println();  
  41.     }  
  42.   
  43. }  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值