C/C++ 獲取unsigned short的高八位和低八位數值


 1 #include "pch.h"
 2 #include <iostream>
 3 #include <string>
 4  
 5 typedef  unsigned char BYTE;  6 typedef  unsigned short WORD;  7 typedef  unsigned int UINT32;  8 using namespace std;  9 int main() 10 { 11     string s ; 12     char str[100] = "hello,worl------------------------------d" ; 13     WORD word = 0x1234; 14     BYTE b1 =(BYTE) (word &0xff );//低八位
15     BYTE b2 = (BYTE)(word << 8);//低八位
16     BYTE b3 = (BYTE)(word >> 8);//高八位
17     cout << "b1=" <<hex<< b1+0 << endl; 18     cout << "b2=" <<hex<< b2+0 << endl; 19     cout << "b3=" << hex << b3 + 0 << endl; 20  
21  
22  getchar(); 23  
24     return 0; 25 }

運行截圖:

 

 

將WORD強制類型轉換為BYTE,默認取BYTE低八位的數值作為BYTE的值

0x1234&0xff 是0x0034 取低八位 所以b1是0x34

0x1234<<8 左移8位 是0x3400 取低八位 所以b2是0x00,即0

0x1245>>8,右移8位 是0x0012 取低8位 所以b3是0x12

 

將占用長度大的類型強制轉換為長度較小的類型,默認取低位值作為長度較小的類型的值

補充:(循環移位)

循環左移n位: (x>>(N - n) ) | (x<<n);

循環右移n位: (x<<(N - n) ) | (x>>n)。

 

cout << "b1=" << (int)b1 << endl;//這樣輸出,不+0

#include <bitset>

cout << "b3="<<bitset<sizeof(int)*8>(b3)<< endl;//二進制輸出


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM