Java语言利用位运算取出一个整数从右端开始的4~7位

Java语言利用位运算取出一个整数从右端开始的4~7位

题目存在歧义吧。4~7位,指的是二进制的,还是十进制的呀。

  • 如果是二进制的,那就左右移位即可,int型是32位,右数4~7,那就想办法干掉7位左边的二进制数,然后再干掉4位右面的二进制数即可。
    一个32位的二进制数,左移25(32-7)位就可以干掉右数7位左边的二进制数了,然后,再右移(补0右移,无符号右移)28(32-4)位就OK了。

  • 如果是十进制的,那就先除以10000,然后再对1000取余,(一个是4个零,一个是3个零)剩下的十进制数,就是答案了。

import java.util.*;
public class lianxi32 {
public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
    System.out.print("请输入一个正整数:");
    int a = s.nextInt();
    a<<=24;
    a>>=28;
    System.out.print(a);
    
    }