C C 取資料中高8位,低8位,合成新資料

2021-09-13 13:26:04 字數 577 閱讀 1080

有時,需將某一串數字中感興趣的某些位的資料進行提取,並將提取的資料合併成新資料,可用位運算來實現。

1.取低幾位的數:可用&運算子,通過取低幾位的二進位制置為1來實現。(低8位:0xff)

2.取高幾位的數:先通過右移將高幾位資料移到低位,再通過&運算來實現。

3.將取得的位數進行合併:先通過左移恢復取得的高幾位資料的權值,再和取得低幾位資料進行|運算來合成新資料。

注:左移和右移是針對補碼來說。

直接上程式,位運算的理論知識見:

#include

#include

unsigned char n_right,n_left,temp; //right表示低8位,left表示高8位

int size_right,size_left,size_temp;

short int num,size_num;

short int num_two,num_three; //int 4位元組,short int 2位元組

int main()

8位資料越界處理

直奔主題吧!8位有符號數的取值範圍是 128 127,為什麼呢?首先我們知道,計算機以補碼的形式儲存的,正數的補碼是原碼不變,負數的補碼是原碼的取反加1。我們先來看 127,原碼0111 1111對吧,若 128是多少呢,0111 1111 1 1000 0000 原碼 然後儲存時,計算機一看是最高...

8位16位32位資料的拆分與合併程式

拆分 16位拆成兩個8位 u16 data16 0x1234 u8 data8 h,data8 l data8 h u8 data16 8 data8 l u8 data16 32位拆成4個8位 方法一 u32 data32 0x12345678 u8 data8 1,data8 2,data8 3...

8位16位32位資料的拆分與合併程式

拆分 16位拆成兩個8位 u16 data16 0x1234 u8 data8 h,data8 l data8 h u8 data16 8 data8 l u8 data16 32位拆成4個8位 方法一 u32 data32 0x12345678 u8 data8 1,data8 2,data8 3...