位运算总结—各大公司笔试面试题

(1)对于位运算有五种运算:与、或、异或、左移和右移。这五种运算都要掌握。

(2)左移运算符m<<n表示把m左移n位。左移n位的时候,最左边的n位将被被丢弃,同时在最右边补上n个0。(在左移n位的时候,有些情况下,相当于原数乘以2的n次方

(3)右移,对于无符号数,右移右边补0,对于有符号数,右移右边补符号位。(对于右移,任何情况下都相当于除

(4)在笔试面试中最常考的题目:

题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制是1001,有2位是1。因此如果输入9,该函数输出2。

解法1:最常规的解法,通过移位运算来实现。思路就是判断某一位上是否是1

解法2:把一个整数减去1,再和原整数做与运算,会把该整数最右边的一个1变成0(记住。那么一个整数的二进制表示中有多少个1,就可以进行多少次这样的操作。

注:两种解法的详细说明可以看《剑指Offer》这本书,很不错的书!

下面是两种解法的Java代码:

package com.sailang.bitoperation;

public class BitOperation
{
	public static void main(String[] args)
	{
		BitOperation a = new BitOperation();
		int b = a.NumberOf1(0);
		int c = a.AnotherNumberOf1(-9);
		
		System.out.println(b);
		System.out.println(c);
	}
	//常规方法
	public int NumberOf1(int n)
	{
		int count = 0;
		int flag = 1;
		
		while(flag != 0)
		{
			if((n & flag) != 0)
			{
				count++;
			}
			flag = flag << 1;
		}
		return count;
	}
	//精妙解法
	public int AnotherNumberOf1(int n)
	{
		int count = 0;
		
		while(n != 0)
		{
			count ++;
			n = (n - 1) & n;
		}
		return count;
	}
}


 实例二:

package com.sailang.bitoperation;
/**
 * 用一条语句判断一个整数是不是2的整数次方
 * @author lizhongyi
 *
 */
public class Test
{
	public static void main(String[] args)
	{
		Test test = new Test();
		
		if(test.isSquareOf2(3))
		{
			System.out.println("是2的整数次方");
		}
		else
		{
			System.out.println("不是2的整数次方");
		}
	}
	public boolean isSquareOf2(int n)
	{
		return ((n - 1) & n) == 0 ? true : false;
	}
}


 实例三:

输入两个整数m和n,计算需要改变m的二进制表示中的多少位才能得到n。比如10的二进制表示为1010,13的二进制表示为1101,需要改变1010中3位才能得到1101。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
嵌入式岗位的笔试面试通常会涉及以下几个方面: 1. 嵌入式系统原理:涉及到嵌入式系统的基本原理、硬件与软件的关系、中断处理、存储器管理、任务调度等。面试官可能会问你关于嵌入式系统的基础知识和相关概念的问。 2. C语言编程:C语言是嵌入式开发中最常用的编程语言,面试官可能会考察你对C语言的掌握程度。常见的问包括指针、数组、结构体、位运算等方面的问,以及C语言中常见的编程技巧和陷阱。 3. 操作系统:嵌入式系统通常会运行在实时操作系统(RTOS)上,所以对于操作系统的基本原理和常用功能要有一定的了解。面试官可能会问你关于任务调度、进程间通信、内存管理等方面的问。 4. 协议与接口:嵌入式系统通常需要与外部设备进行通信,因此对于常见的通信协议和接口标准要有所了解。例如UART、SPI、I2C、CAN等协议,以及GPIO、ADC、PWM等接口。面试官可能会问你如何使用这些协议和接口来实现某些功能。 5. 硬件知识:嵌入式系统开发离不开硬件,所以对于常见的硬件知识要有所了解。例如微处理器、存储器、外设等。面试官可能会问你关于硬件的基本原理、特性和使用方法的问。 当然,具体的面试目和难度会根据不同公司和职位要求而有所不同。建议你在准备面试时,多关注相关技术文档和经典教材,并进行一些实际的项目经验积累来提升自己的实践能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值