欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++二進(jìn)制翻轉(zhuǎn)實(shí)例分析

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

本文實(shí)例講述了C++二進(jìn)制翻轉(zhuǎn)的方法,將常用的幾種解決方法羅列出來(lái)供大家比較選擇。具體如下:

首先來(lái)看看一個(gè)相對(duì)笨拙的算法:

#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);
}

下面這個(gè)翻轉(zhuǎn)程序相對(duì)上面實(shí)例而言簡(jiǎn)潔高效:

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;
}

下面這個(gè)反轉(zhuǎn)程序比較容易理解:

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; 
}

最后這個(gè)超牛的反轉(zhuǎn)程序簡(jiǎn)直碉堡了。。。

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));
}

希望本文所述對(duì)大家C++程序算法設(shè)計(jì)的學(xué)習(xí)有所幫助。

相關(guān)文章

  • c語(yǔ)言調(diào)用匯編的方法

    c語(yǔ)言調(diào)用匯編的方法

    在此記錄一下c調(diào)用匯編的方法,匯編使用的是AT&T語(yǔ)法。例子很簡(jiǎn)單,就是在給一個(gè)整數(shù)用匯編轉(zhuǎn)換成二進(jìn)制
    2013-11-11
  • C++11 lambda表達(dá)式在回調(diào)函數(shù)中的使用方式

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

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

    C++面試題之結(jié)構(gòu)體內(nèi)存對(duì)齊計(jì)算問(wèn)題總結(jié)大全

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

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

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

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

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

    C語(yǔ)言動(dòng)態(tài)內(nèi)存管理的實(shí)現(xiàn)

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

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

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

    基于Matlab制作一款簡(jiǎn)單的龍舟小游戲

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

    c語(yǔ)言實(shí)現(xiàn)向上取整計(jì)算方法

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

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

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

最新評(píng)論