華為2018春招筆試題目 位元組流解析與長整數相乘

2021-09-12 09:15:50 字數 2616 閱讀 7237

位元組也叫byte,是計算機資料的基本儲存單位,

bit儲存內容是0和1,bit是計算機中最小的儲存單位

乙個byte是由8個bit組成,它是最小的可定址單元 ,1個位元組等於8位二進位制。1b(byte)=8b(bit)

八個bit可以儲存基本的元素 2^8數  例如:abcd1234和各種符號

在ascii碼中,乙個英文本母(不分大小寫)佔乙個位元組的空間,乙個中文漢字佔兩個位元組的空間,乙個位元組是8位,乙個漢字編碼兩個位元組是十六位。英文標點佔乙個位元組,中文標點佔兩個位元組。乙個二進位制數字序列,在計算機中作為乙個數字單元,一般為8位二進位制數,換算為十進位制。最小值:0 最大值:255 。如乙個ascii碼就是乙個位元組

二進位制占乙個bit

八進位制占三個bit

十六進製制占四個bit

十進位制一般按實際來算,7以下佔3個,8,9佔4個。

例如:是16進製制,對應二進位制為「0110  0010  1000   0000」

根據數值占用bit數,按順序從輸入位元組流中解析出對應數值,解析順序按輸入陣列astelement索引公升序; 

void decode(unsigned int uiinputlen, unsigned char ainputbyte, unsigned int uielementnum, element_stru astelement); 

unsigned int uiinputlen:位元組陣列(流)長度 

unsigned char ainputbyte:位元組陣列(流) 

unsigned int uielementnum:解析數值個數 

element_stru astelement:數值的結構陣列指標,含義如下 

struct 

element_stru;

輸入描述: 

位元組陣列長度uiiutputlen為3; 

位元組陣列ainputbyte[3]為,對應二進位制為「0110 0010, 1000 0000, 0000 0000」; 

解析數值個數uielementnum為2; 

數值[0]的值佔4個bit,即astelement[0].uielementlength = 4; 

數值[1]的值佔5個bit,即astelement[1].uielementlength = 5; 

輸出描述: 

數值[0]的值為6,二進位制為「0110」,即astelement[0].uielementvalue = 6; 

數值[1]的值為5,二進位制為「0010 1」,即astelement[1].uielementvalue = 5;

示例1 

輸入 3 

0x62 0x80 0x00 

2 4 

5 輸出 6 5

思路

我們輸入的「0x62 0x80 0x00 」是以二進位制01的形式連續排列的,要求我們從二進位制位元組流取出指定數目的bit,然後轉化為十進位制輸出。例如 0x62 0x80 實際上連在一起是 0110 0010 1000 0000,輸入4,表示取4個bit得到0110,轉化為十進位制是6,接著輸入5,表示接著取5個bit得到00101,轉化為十進位制是5。另外,這道題的難點主要在於進製準換以及相關的輸入操作。

例項:

#include#include#includeusing namespace std;

int main()

int num;

cin >> num; //解析數值的個數elementnum

vectornums(num); //定義乙個包含num個int元素的stl向量

for (int i = 0; i < num; ++i)

vectorbits;

//len的值分別是98,128,0(0x62 0x80 0x00)

for (int len : lens)

} int start = 0;

long long result = 0;

for (int num : nums)

} }//判斷結果有幾位

while (lenc--)

} char ch;

for (int i = strrst_length - 1; i >= 0; i--) //把結果放入字串中 (注意倒序)

if (strrst.empty())//如果結果為0,則輸出字串為「0」

strrst = "0";

return 0;

}int main()

if (b[0] == '-')

string c = "\0";//儲存結果

multiply(a, b, c);

if(neg_count==1)

cout << "-";

cout << c << endl;

system("pause");

return 0;

}

from:

華為2018春招筆試題

給定乙個字串,輸出字串中最長的數字串,並把這個數字串的長度輸出。請乙個在字串中找出連續最長的數字串,並把這個串的長度返回 如果存在長度相同的連續數字串,返回最後乙個連續數字串 注意 數字串只需要是數字組成的就可以,並不要求順序,比如數字串 1234 的長度就小於數字串 1359055 如果沒有數字,...

2020華為春招機試題目回憶

剛剛做完題目,趁著還記得題目,記錄一下。第一題,給兩個ip和掩碼,計算這兩個ip在不在乙個子網。第二題,給0 1矩陣,計算由1組成的最大的正方形的面積。第三題,打怪獸,每個怪獸有個數值標記,從起點開始,必須按數值大小順序打,矩陣上0不能走,1代表沒有怪獸,2的就是怪獸,打過了就變成1。問能不能打到最...

網易春招筆試題

網易2017年3月26日中午的實習生招聘裡面有道程式設計題,大概是說有乙個圍棋格仔,每乙個塊為白色或黑色,小易會找出列方向上顏色相同並且連著的區域,並最長,將其塗為紅色。第一行輸入棋盤的大小,如3,後面依次是棋盤的顏色,w是white白色,b是black黑色 bwbbbb bww 那麼很明顯第一列有...