亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? spbitset.h

?? DES算法原理及實現,實現了3DES和DES的程序過程
?? H
字號:
/*
*	 Template class of super bitset in terms of stl::bitset
*    Copyright (C) 2007  Stone
*
*    This program is free software: you can redistribute it and/or modify
*    it under the terms of the GNU General Public License as published by
*    the Free Software Foundation, either version 3 of the License, or
*    (at your option) any later version.
*
*    This program is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*    GNU General Public License for more details.
*
*    You should have received a copy of the GNU General Public License
*    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*
*    Contact me by stoneyrh@163.com 
*
*/
#ifndef _SPBITSET_H
#define _SPBITSET_H


#include <bitset>
#include <string>
#include <iostream>

using std::bitset;
using std::string;
using std::basic_istream;
using std::basic_ostream;

template <size_t _Bits>
class spbitset
{
public:
	//friend functions
	template <class _Elem,class _Traits> friend basic_ostream<_Elem,_Traits>& operator<<(basic_ostream<_Elem,_Traits>& os,const spbitset<_Bits>& bs)
	{
		os << bs.set;
		return os;
	}
	template <class _Elem,class _Traits> friend basic_istream<_Elem,_Traits>& operator>>(basic_istream<_Elem,_Traits>& is,spbitset<_Bits>& bs)
	{
		is >> bs.set;
		return is;
	}

public:
	typedef bitset<_Bits> set_t;
	
	spbitset(unsigned _int64 val)
	{
		set = (unsigned _int32)(val >> 32);
		set <<= 32;
		set |= (unsigned _int32)val;
	}

	spbitset(const spbitset<_Bits>& rhs)
	{
		set = rhs.set;
	}

	~spbitset()
	{
	}

	const set_t& getset() const
	{
		return set;
	}

	spbitset<_Bits> operator<<(size_t pos) const
	{
		return (spbitset<_Bits>(*this) <<= pos);
	}

	spbitset<_Bits>& operator<<=(size_t pos)
	{
		set <<= pos;
		return *this;
	}

	spbitset<_Bits> operator>>(size_t pos) const
	{
		return (spbitset<_Bits>(*this) >>= pos);
	}

	spbitset<_Bits>& operator>>=(size_t pos)
	{
		set >>= pos;
		return *this;
	}

	spbitset<_Bits> operator^(const spbitset<_Bits>& rhs)
	{
		return (spbitset<_Bits>(*this) ^= rhs);
	}

	spbitset<_Bits>& operator^=(const spbitset<_Bits>& rhs)
	{
		set ^= rhs.set;
		return *this;
	}

	spbitset<_Bits>& operator=(const spbitset<_Bits>& rhs)
	{
		if (this != &rhs)
		{
			set = rhs.set;
		}
		return *this;
	}

	spbitset<_Bits> operator|(const spbitset<_Bits>& rhs)
	{
		return (spbitset<_Bits>(*this) |= rhs);
	}

	spbitset<_Bits>& operator|=(const spbitset<_Bits>& rhs)
	{
		set |= rhs.set;
		return *this;
	}

	spbitset<_Bits> operator&(const spbitset<_Bits>& rhs)
	{
		return (spbitset<_Bits>(*this) &= rhs);
	}

	spbitset<_Bits>& operator&=(const spbitset<_Bits>& rhs)
	{
		set &= rhs.set;
		return *this;
	}

	/*
	* set specified bit to specified value
	*/
	void setbit(size_t pos,bool bit)
	{
		set.set(pos,bit);
	}

	/*
	* get the value of specified bit
	*/
	bool getbit(size_t pos)
	{
		return set.test(pos);
	}

	/*
	* rotate shift left for one bit on bits between [pos1,pos2]
	*/
	void rotate_shift_left(size_t pos1,size_t pos2)
	{
		size_t lm = pos1 > pos2 ? pos2 : pos1;
		size_t rm = pos1 > pos2 ? pos1 : pos2;
		bool lbit = getbit(lm);
		for (size_t i = lm + 1; i <= rm; ++ i)
		{
			setbit(i - 1,getbit(i));
		}
		setbit(rm,lbit);
	}

	/*
	* rotate shift left for count bit on bits between [pos1,pos2]
	*/
	void rotate_shift_left(size_t pos1,size_t pos2,size_t count)
	{
		for (size_t i = 0; i < count; ++ i)
		{
			rotate_shift_left(pos1,pos2);
		}
	}

	/*
	* rotate shift right for count bit on bits between [pos1,pos2]
	*/
	void rotate_shift_right(size_t pos1,size_t pos2,size_t count)
	{
		for (size_t i = 0; i < count; ++ i)
		{
			rotate_shift_right(pos1,pos2);
		}
	}

	/*
	* rotate shift right for one bit on bits between [pos1,pos2]
	*/
	void rotate_shift_right(size_t pos1,size_t pos2)
	{
		size_t lm = pos1 > pos2 ? pos2 : pos1;
		size_t rm = pos1 > pos2 ? pos1 : pos2;
		bool rbit = getbit(rm);
		for (size_t i = rm - 1; i >= lm; -- i)
		{
			setbit(i + 1,getbit(i));
		}
		setbit(lm,rbit);
	}

	/*
	* rearrange bits according to the position array
	* pointed by poses
	*/
	void extract(size_t* poses,size_t count)
	{
		spbitset<_Bits> ns(*this);
		for (size_t i = 0; i < count; ++ i)
		{
			setbit(i,ns.getbit(poses[i] - 1));
		}
	}

	/*
	* turn the bits to unsigned _int64 value 
	* which has the same bits with the set
	* if the bits is more than or less than 64
	* it will cut it or pad it automatically
	*/
	unsigned _int64 to_ulonglong()
	{
		string ts = set.to_string();

		string::size_type tl = ts.length();
		//if less than 64 bits, pad it
		//if more than 64 bits, cut it
		//the high part is the front part

		if (tl > 64)
		{
			ts = ts.substr(tl - 64,64);
		}
		else if (tl < 64)
		{
			ts.insert(0,64 - tl,'0');
		}
		
		unsigned _int32 lo = (bitset<32>(ts.substr(32,32))).to_ulong();
		unsigned _int32 hi = (bitset<32>(ts.substr(0,32))).to_ulong();

		unsigned _int64 ull = hi;
		ull <<= 32;
		ull |= lo;
		return ull;
	}

private:
	set_t set;
};

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆精品国产传媒mv男同| 日韩一区二区免费高清| 欧美国产视频在线| 久久成人久久鬼色| 精品少妇一区二区三区在线播放 | 日韩欧美二区三区| 麻豆精品精品国产自在97香蕉 | 国产福利91精品| 亚洲色图色小说| 欧美日韩第一区日日骚| 久久99国产精品尤物| 国产清纯白嫩初高生在线观看91| 国产不卡高清在线观看视频| 国产精品久久久久久户外露出| 在线欧美日韩国产| 美国欧美日韩国产在线播放| 国产调教视频一区| 91国偷自产一区二区三区观看| 亚洲不卡在线观看| 欧美精品一区二区蜜臀亚洲| 成人美女在线观看| 天天操天天综合网| 中文欧美字幕免费| 91精品国产综合久久精品| 成人综合婷婷国产精品久久蜜臀| 无吗不卡中文字幕| 亚洲欧美aⅴ...| 久久精品视频一区二区三区| 欧美日韩第一区日日骚| 97精品国产97久久久久久久久久久久| 偷拍自拍另类欧美| 亚洲亚洲人成综合网络| 国产精品久久精品日日| 26uuu久久综合| 欧美一级艳片视频免费观看| 在线亚洲人成电影网站色www| 国产一区不卡在线| 久久国内精品自在自线400部| 五月激情丁香一区二区三区| 一区二区日韩av| 欧美不卡在线视频| 精品一区二区三区免费播放| 天堂va蜜桃一区二区三区漫画版| 国产在线麻豆精品观看| 亚洲日本va午夜在线影院| 久久影院午夜片一区| 欧美日韩精品系列| 91黄色激情网站| 成人黄色小视频| 国产精品99久久久久久久vr| 奇米一区二区三区| 日本高清不卡aⅴ免费网站| 色综合天天综合网天天看片| 色哟哟精品一区| 欧美麻豆精品久久久久久| 欧美日产国产精品| 欧美精品一区二区久久久| 精品对白一区国产伦| 久久综合色一综合色88| 26uuu久久综合| 欧美国产精品一区| 一区二区三区美女| 久久99最新地址| 欧美亚洲高清一区| 亚洲愉拍自拍另类高清精品| 久久久久久久久97黄色工厂| 婷婷一区二区三区| 欧美日韩在线综合| 久久精品视频网| 亚洲大片在线观看| 国产成人综合网| 在线精品视频免费播放| 久久久蜜桃精品| 亚洲午夜精品17c| proumb性欧美在线观看| 8x8x8国产精品| 亚洲免费观看在线视频| 国产在线播精品第三| 91久久精品午夜一区二区| 精品成人a区在线观看| 亚洲一区在线看| 色偷偷久久人人79超碰人人澡| 精品日产卡一卡二卡麻豆| 亚洲福利视频一区| 色综合久久综合| 成人免费在线视频| 国产综合一区二区| 精品欧美黑人一区二区三区| 亚洲国产成人tv| 欧美三级午夜理伦三级中视频| 亚洲欧美另类在线| 91国内精品野花午夜精品| 亚洲一区二区综合| 制服丝袜亚洲播放| 国产麻豆精品在线观看| 欧美韩国日本综合| 欧美天堂亚洲电影院在线播放| 国产欧美视频一区二区| 久久国产乱子精品免费女| 欧美成人高清电影在线| 日日夜夜精品视频天天综合网| 欧美性色欧美a在线播放| 天天综合天天做天天综合| 欧美日韩一区 二区 三区 久久精品 | 精品国产青草久久久久福利| 免费高清不卡av| 久久一区二区视频| 成人蜜臀av电影| 免费不卡在线观看| 日本一区二区免费在线观看视频| 一本大道久久a久久综合婷婷| 一区二区三区不卡在线观看| 欧美午夜电影一区| 狠狠色丁香九九婷婷综合五月| 国产精品免费视频观看| 欧美无乱码久久久免费午夜一区 | 在线播放国产精品二区一二区四区 | 欧美人xxxx| 成人黄色av电影| 免费看精品久久片| 国产精品欧美久久久久一区二区 | 激情欧美一区二区三区在线观看| 亚洲情趣在线观看| 久久综合色综合88| 欧美日韩小视频| 成人一级黄色片| 韩国一区二区在线观看| 久久女同精品一区二区| 91精品国产日韩91久久久久久| 福利91精品一区二区三区| 日韩中文欧美在线| 一区二区三区.www| 中文字幕一区二区三中文字幕| 欧美高清www午色夜在线视频| 99re这里只有精品首页| 国产成人99久久亚洲综合精品| 免费欧美日韩国产三级电影| 午夜精品福利一区二区三区av| 伊人婷婷欧美激情| 国产精品美女久久福利网站| 精品sm捆绑视频| 7777精品伊人久久久大香线蕉完整版 | 亚洲一二三四区不卡| 亚洲免费观看高清| 中文字幕日韩av资源站| 国产精品福利影院| 国产精品午夜免费| 成人欧美一区二区三区白人| 亚洲欧美中日韩| 亚洲黄色免费网站| 午夜电影久久久| 老司机精品视频线观看86| 国产一区二区三区精品欧美日韩一区二区三区 | 日韩一区二区在线看片| 日韩欧美在线观看一区二区三区| 欧美一级欧美一级在线播放| 欧美一区二区福利视频| 国产精品毛片大码女人| 一个色在线综合| 另类成人小视频在线| 国产成人精品一区二区三区四区| a级高清视频欧美日韩| 欧美三级电影一区| 久久久午夜精品| 日韩经典一区二区| 99久久精品国产一区二区三区| 在线看一区二区| 国产日韩欧美一区二区三区综合| 亚洲色图另类专区| 免费成人结看片| 一本到三区不卡视频| 久久久亚洲国产美女国产盗摄| 一区二区三区在线免费播放| 狠狠色综合色综合网络| 欧美影视一区在线| 欧美国产精品一区二区| 久久精品二区亚洲w码| 欧美亚洲国产一区二区三区va | 日韩免费看网站| 五月激情六月综合| 色婷婷久久久综合中文字幕| 久久午夜电影网| 久久精品二区亚洲w码| 91丨porny丨最新| 国产成都精品91一区二区三| 欧美日韩国产精品成人| 亚洲欧美偷拍另类a∨色屁股| 国产一区不卡在线| 久久久久9999亚洲精品| 麻豆国产欧美日韩综合精品二区 | 欧美精品一二三| 亚洲国产一区在线观看| 91久久精品网| 日韩精品成人一区二区在线| 欧美精品乱码久久久久久| 天天亚洲美女在线视频| 日韩欧美国产精品| 国内精品不卡在线| 国产精品热久久久久夜色精品三区| 国产成人综合亚洲网站|