华为上机练习题--按位取反操作

来源:互联网 发布:微信淘宝联盟链接 编辑:程序博客网 时间:2024/05/22 14:59

题目:

 求指定位取反后的结果(用异或来进行指定位数的取反)
 *   输入:0x1234 3
 *   输出:0x123c


分析:从网上看到这道题发现蛮有意思的, 记得当时学C语言的时候就有过这种的操作,只不过时间久了就有些健忘, 经过努力追忆后终于想起些些, 现在做出如下总结:

 *   AND--> & --> AND指令主要用于使操作数若干位不变, 而使某些位为'0'的场合
 *   OR --> | --> OR 指令主要用于使操作数若干位不变, 而使某些位为'1'的场合
 *   XOR--> ^ --> XOR指令主要用于使操作数若干位不变, 而使某些位'取反'的场合

看了上面的总结相信这类题再变化的操作大家也能应付的过来。


代码如下:

package com.wenj.test;

/**
 * 在网上看到的题目: 求指定位取反后的结果(用异或来进行指定位数的取反)
 *   输入: 0x1234 3
 *   输出:0x123c
 *   AND--> & --> AND指令主要用于使操作数若干位不变, 而使某些位为'0'的场合
 *   OR --> | --> OR 指令主要用于使操作数若干位不变, 而使某些位为'1'的场合
 *   XOR--> ^ --> XOR指令主要用于使操作数若干位不变, 而使某些位'取反'的场合
 * @author wenj91-PC
 *
 */

public class TestBitOperate {

    public static void main(String args[]){
        int intIn = 0x1234;
        int n = 3;
        TestBitOperate tb = new TestBitOperate();
        System.out.println("0x" + Integer.toString(tb.bitOperateByPos(intIn, n), 16));
    }
    
    public int bitOperateByPos(int intIn, int n){
        int intTemp = intIn;
        int i = 1;
        i<<=n;
        intTemp ^= i;
        return intTemp;
    }
}


0 0
原创粉丝点击