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

题目:

求指定位取反后的结果(用异或来进行指定位数的取反)

*   输入: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;

}

}

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

时间: 2024-10-13 12:30:57

华为上机练习题--按位取反操作的相关文章

华为上机练习题--括号匹配检测

题目: 输入一串字符串,其中有普通的字符与括号组成(包括'('.')'.'[',']'),要求验证括号是否匹配,如果匹配则输出0.否则输出1. Smple input:dfa(sdf)df[dfds(dfd)]    Smple outPut:0 分析: 类似于括号字符匹配这类的问题, 我们可以模拟栈的操作来进行验证, 这样问题就简单了, 就是栈的操作 代码如下: package com.wenj.test; import java.util.ArrayList; import java.uti

华为上机练习题--将英文号码翻译成数字号码

题目: * 将 电话号码 one two ...nine zero 翻译成1  2 ..9 0 * * 中间会有double * * 例如 *     输入:OneTwoThree *     输出:123 *     输入:OneTwoDoubleTwo *     输出:1222 *     输入:1Two2 *     输出:ERROR *     输入:DoubleDoubleTwo *     输出:ERROR 分析:对于字符串的操作有一个比较好用的方法就是replaceAll(),有

华为上机练习题--简单加减表达式计算

题目: 通过键盘输入100以内正整数的加.减运算式,请编写一个程序输出运算结果字符串. 输入字符串的格式为:"操作数1 运算符 操作数2","操作数"与"运算符"之间以一个空格隔开. 补充说明: 1.操作数为正整数,不需要考虑计算结果溢出的情况. 2.若输入算式格式错误,输出结果为"0". 要求实现函数: void arithmetic(const char *pInputStr, long lInputLen, char *

华为上机练习题--统计各小写字符出现的次数

题目: 手动输入一个字符串,仅限小写字母,统计并输出每个字符在字符串中出现的次数,并输出.提示可以用map 例子:输入:aaabbbccc 输出:a 3 b 3 c 3 分析: 看到后面的提示,简直就是不用动脑,直接简单粗暴的顺势而上 直接上代码: import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; public class TestCharAcount

华为上机练习题--计算表达式

题目: 输入一个表达式,没有括号,数字小于0-9之间,输出计算结果,所有的中间结果化为整形. 例如:  输入:3+8×2/9-2 输出:2 函数原型 public int getMyRet(String str) 分析: 这个题目略显高端啊, 像我这种非专业的自学者,还真没有学过编译原理之类的课程, 要自己实现一个这种小型的编译器是非常困难啊, 所幸的是这个题目是用java来实现的, 而我本身也曾经看到过用java来实现这类的问题, 这类问题有一种方法就是实现类编译器功能的函数, 这个我是驾驭不

华为上机练习题--重复字符过滤

题目: 请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉. 比如字符串"abacacde"过滤结果为"abcde". 示例 输入:"deefd"        输出:"def" 输入:"afafafaf"     输出:"af" 输入:"pppppppp"     输出:"p" 分析: 看到这种类似的相同字符过滤,使

华为上机练习题--按身高找出最佳二人组

题目: 要从5个人中选取2个人作为礼仪,其中每个人的身高范围为160-190,要求2个人的身高差值最小(如果差值相同的话,选取其中最高的两人),以升序输出两个人的身高. Smple input:161 189 167 172 188 Sample outPut: 188 189 分析:我的理解就是先逆序排好数值, 然后逐对比较身高差值, 找出身高差值最小的然后输出 代码如下: package com.wenj.test; /** * 要从5个人中选取2个人作为礼仪,其中每个人的身高范围为160-

华为上机练习题--求两个数组的总和

题目: 求两个数组的和差:就是去掉两个数组中相同的元素 然后将两个数组中的元素存放在一个新的数组中,且数组A中元素要在B数组元素之前 如:输入: int[] a={1,2,4,7,6,9}; int[] b={2,4,3,10}; 输出: int[] c = {1, 7, 6, 9, 3, 10}; 分析: 剔除相同的元素要互相比较, 然后将不同的元素先后插入新的数组中, 所以我将重点放在比较上, 有可能效率有点低, 大家有什么好的想法可以分享下: 代码如下: package com.wenj.

华为上机练习题--按照新规则排序

题目: * 给定一个数组input[] ,如果数组长度n为奇数, * 则将数组中最大的元素放到 output[] 数组最中间的位置, * 如果数组长度n为偶数, * 则将数组中最大的元素放到 output[] 数组中间两个位置偏右的那个位置上, * 然后再按从大到小的顺序,依次在第一个位置的两边, * 按照一左一右的顺序,依次存放剩下的数. * 例如: *  input[] = {3, 6, 1, 9, 7} *  output[] = {3, 7, 9, 6, 1}; *  input[] =