9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
學習啦 > 創業指南 > 職場 > 面試題 > 嵌入式軟件工程師面試題:位操作

嵌入式軟件工程師面試題:位操作

時間: 敏敏644 分享

嵌入式軟件工程師面試題:位操作

  位操作(Bit manipulation)

  1、 嵌入式系統總是要用戶對變量或寄存器進行位操作。給定一個整型變量a,寫兩段代碼,第一個設置a的bit 3,第二個清除a 的bit 3。在以上兩個操作中,要保持其它位不變。

  對這個問題有三種基本的反應

  1). 不知道如何下手。該被面者從沒做過任何嵌入式系統的工作。

  2). 用bit fields。Bit fields是被扔到C語言死角的東西,它保證你的代碼在不同編譯器之間是不可移植的,同時也保證了的你的代碼是不可重用的。我最近不幸看到Infineon為其較復雜的通信芯片寫的驅動程序,它用到了bit fields因此完全對我無用,因為我的編譯器用其它的方式來實現bit fields的。從道德講:永遠不要讓一個非嵌入式的家伙粘實際硬件的邊。

  3). 用 #defines 和 bit masks 操作。這是一個有極高可移植性的方法,是應該被用到的方法。最佳的解決方案如下:

  #define BIT3 (0x1<<3)

  static int a;

  void set_bit3(void)

  {

  a |= BIT3;

  }

  void clear_bit3(void)

  {

  a &= ~BIT3;

  }

  一些人喜歡為設置和清除值而定義一個掩碼同時定義一些說明常數,這也是可以接受的。我希望看到幾個要點:說明常數、|=和&=~操作。

  訪問固定的內存位置(Accessing fixed memory locations) C/C++ Development

  2、嵌入式系統經常具有要求程序員去訪問某特定的內存位置的特點。在某工程中,要求設置一絕對地址為0x67a9的整型變量的值為0xaa66。編譯器是一個純粹的ANSI編譯器。寫代碼去完成這一任務。

  這一問題測試你是否知道為了訪問一絕對地址把一個整型數強制轉換(typecast)為一指針是合法的。這一問題的實現方式隨著個人風格不同而不同。典型的類似代碼如下:

  int *ptr;

  ptr = (int *)0x67a9;

  *ptr = 0xaa55;

  一個較晦澀的方法是:

  *(int * const)(0x67a9) = 0xaa55;

  即使你的品味更接近第二種方案,但我建議你在面試時使用第一種方案。

203997 主站蜘蛛池模板: 亚洲情综合五月天| 国产熟女真实乱精品51| 午夜欧美日韩在线视频播放 | 国产精品电影久久久久电影网| 国产精品一二三区蜜臀av| 精品国产综合一区二区三区| 无码伊人久久大杳蕉中文无码| 亚洲精品麻豆一二三区| 亚洲夜夜欢一区二区三区| 一个色综合亚洲热色综合| 国产精品点击进入在线影院高清| 精品国产成人一区二区| 国产视色精品亚洲一区二区| 一个色的导航| 亚洲无线码中文字幕在线| 亚洲第一二三区日韩国产| 精品无码三级在线观看视频| 99热国产成人最新精品| 国产AV影片麻豆精品传媒| 成人免费无遮挡在线播放| 无码日韩做暖暖大全免费不卡| 久久亚洲综合精品成人网| 国产一区二区三区国产视频| 中国国产免费毛卡片| 国模少妇无码一区二区三区| 亚洲乱理伦片在线观看中字| 狠狠色狠狠综合久久| 久久综合给合久久狠狠狠 | 四虎库影成人在线播放| 青青草国产自产一区二区| 国产无遮挡真人免费视频| 国产在线视频导航| 老少配老妇老熟女中文普通话| 亚洲午夜成人精品电影在线观看| 国产在线精品中文字幕| 亚洲人成人日韩中文字幕| 偷拍久久大胆的黄片视频| 亚洲狠狠狠一区二区三区| 91午夜福利在线观看精品| 四虎影视www在线播放| 男人猛躁进女人免费播放|