亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++二進制翻轉實例分析

 更新時間:2014年09月19日 09:14:57   投稿:shichen2014  
這篇文章主要介紹了C++二進制翻轉,通過幾個實例分析二進制翻轉算法的實現(xiàn)技巧,需要的朋友可以參考下

本文實例講述了C++二進制翻轉的方法,將常用的幾種解決方法羅列出來供大家比較選擇。具體如下:

首先來看看一個相對笨拙的算法:

#include <iostream>

using namespace std;

void printBinary(unsigned char str, int size = 1)
{
 int flag = 0x01;
 for (int i = 0; i < size; i++)
 {
 for (int i = 0; i < 8; i++)
 {
  if (str & (0x01 << (7 - i)))
  cout << "1";
  else
  cout << "0";
 }
 cout << endl;;
 }
}

unsigned char mySwap(unsigned char data)
{
 unsigned char flag = 0x01;
 for (int i = 0, j = 7; i < j; i++, j--)
 {
 int right = data & (0x01 << i);
 int left = data & (0x01 << j);
 data &= ~(0x01 << j);
 data &= ~(0x01 << i);
 int dist = j - i;
 data |= (right << dist);
 data |= (left >> dist);
 }
 return data;
}

void main(void)
{
 char source=0x07;
 int i;
 printBinary(source, 1);
 unsigned char result = mySwap(source);
 printBinary(result);
}

下面這個翻轉程序相對上面實例而言簡潔高效:

unsigned char swapBinary(unsigned char data)
{
 int sign = 1;
 unsigned char result = 0;
 for (int i = 0; i <= 7; i++)
 {
 result += ((data & (sign << i)) >> i) << (7 - i);
 }

 return result;
}

下面這個反轉程序比較容易理解:

unsigned char swapBinary2(unsigned char data)
{
 data=(( data & 0xf0) >> 4) | ((data & 0x0f) << 4); 
 data=((data & 0xCC) >> 2) | ((data & 0x33) << 2); 
 data=((data & 0xAA) >> 1) | ((data & 0x55) << 1); 
 return data; 
}

最后這個超牛的反轉程序簡直碉堡了。。。

unsigned char codeTable[16]={0x00, 0x08, 0x04, 0x0c, 0x02, 0x0a, 0x06, 0x0e, 0x01, 0x09, 0x05, 0x0d, 0x03, 0x0b, 0x07, 0x0f}; 

unsigned char swapBinary3(unsigned char data) 
{ 
 return ((codeTable[data >> 4]) | (codeTable[data & 0x0f] << 4));
}

希望本文所述對大家C++程序算法設計的學習有所幫助。

相關文章

  • c語言調用匯編的方法

    c語言調用匯編的方法

    在此記錄一下c調用匯編的方法,匯編使用的是AT&T語法。例子很簡單,就是在給一個整數(shù)用匯編轉換成二進制
    2013-11-11
  • C++11 lambda表達式在回調函數(shù)中的使用方式

    C++11 lambda表達式在回調函數(shù)中的使用方式

    這篇文章主要介紹了C++11 lambda表達式在回調函數(shù)中的使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C++面試題之結構體內存對齊計算問題總結大全

    C++面試題之結構體內存對齊計算問題總結大全

    這篇文章主要給大家總結了關于C++面試題中結構體內存對齊計算問題的相關資料,文中通過示例代碼介紹的非常詳細,通過這些介紹的內容對大家在面試C++工作的時候,會有一定的參考幫助,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-08-08
  • C++中getline()、gets()等函數(shù)的用法詳解

    C++中getline()、gets()等函數(shù)的用法詳解

    這篇文章主要介紹了C++中getline()、gets()等函數(shù)的用法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • C++如何將vector數(shù)字寫入到txt文件中

    C++如何將vector數(shù)字寫入到txt文件中

    這篇文章主要介紹了C++如何將vector數(shù)字寫入到txt文件中問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C語言動態(tài)內存管理的實現(xiàn)

    C語言動態(tài)內存管理的實現(xiàn)

    本文主要介紹了C語言動態(tài)內存管理的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 基于Qt+OpenCV實現(xiàn)照片換底色處理

    基于Qt+OpenCV實現(xiàn)照片換底色處理

    在圖像處理領域,OpenCV是一款強大而廣泛應用的開源庫,能夠提供豐富的圖像處理和計算機視覺功能,本文將介紹如何利用Qt 編輯器調用OpenCV庫對照片進行換底色處理,實現(xiàn)更加獨特和吸引人的效果
    2023-11-11
  • 基于Matlab制作一款簡單的龍舟小游戲

    基于Matlab制作一款簡單的龍舟小游戲

    這篇文章主要為大家介紹如何利用Matlab制作一款簡單的龍舟小游戲,文中的示例代碼講解詳細,對我們學習Matlab有一定幫助,需要的可以參考一下
    2022-03-03
  • c語言實現(xiàn)向上取整計算方法

    c語言實現(xiàn)向上取整計算方法

    這篇文章主要介紹了c語言實現(xiàn)向上取整計算方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Qt自定義控件實現(xiàn)儀表盤

    Qt自定義控件實現(xiàn)儀表盤

    這篇文章主要為大家詳細介紹了Qt如何自定義控件實現(xiàn)儀表盤,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02

最新評論