<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=PowerOfCryptography%2F%EC%A1%B0%ED%98%84%ED%83%9C</id>
	<title>PowerOfCryptography/조현태 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=PowerOfCryptography%2F%EC%A1%B0%ED%98%84%ED%83%9C"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=PowerOfCryptography/%EC%A1%B0%ED%98%84%ED%83%9C&amp;action=history"/>
	<updated>2026-05-14T18:34:55Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=PowerOfCryptography/%EC%A1%B0%ED%98%84%ED%83%9C&amp;diff=37540&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:24, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=PowerOfCryptography/%EC%A1%B0%ED%98%84%ED%83%9C&amp;diff=37540&amp;oldid=prev"/>
		<updated>2021-02-07T05:24:01Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 소감 ==&lt;br /&gt;
숫자가 지대 크다. 감당이 안된다..ㅠ.ㅜ&lt;br /&gt;
사실 하라면 못할것도 없지만, 입력 형식과 출력 형식등을 새로 짜내고, 덧셈및 곱셈연산을 다시짜주면 간단히(?)해결된다.&lt;br /&gt;
하지만 지금은 일해야 하기때문에 시간이 부족한 관계로..&lt;br /&gt;
임시로 뒤에 두 숫자는 해결하지 못하는 소스를 짜두었다.&lt;br /&gt;
내일이나 모레 수정 및 보완해서 두개 다 풀수 있도록 만들겠다.&lt;br /&gt;
&lt;br /&gt;
// 값을 입력받을때, 두 값의 입력순서를 바꿔 놓았는데, 그편이 좀더 안정적이라는 단순한 이유때문..&lt;br /&gt;
   회사에서 이런짓 하면 짤리려나?ㅎㅎㅎ&lt;br /&gt;
&lt;br /&gt;
 두번째 소스.. 숫자가 커도 저장하고 연산할 수 있을...듯 하다..;;ㅁ;; ㅎㅎㅎ MAX_LONG의 값을 10으로 줄이고 테스트를 해서 2개 이상의 경우에도 돌아가는 것은 알겠는데... 3번째 4번째 예제의 수가 원체 커야지 말이다. 연산의 결과가 좀처럼 안나온다. 곱하기 루틴에서 계속 더하고 있는듯..;;ㅁ;;&lt;br /&gt;
 음.. 다른방법을 찾아야 하나.^^;&lt;br /&gt;
&lt;br /&gt;
== 소스 ==&lt;br /&gt;
 #include &amp;amp;lt;iostream&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 using namespace std;&lt;br /&gt;
 const int TRUE=1;&lt;br /&gt;
 const int FALSE=0;&lt;br /&gt;
 &lt;br /&gt;
 unsigned __int64 such_target_number(unsigned __int64 mokpyo, unsigned __int64 gaesu)&lt;br /&gt;
 {&lt;br /&gt;
 	unsigned __int64 min_answer=1, max_answer=mokpyo+1;&lt;br /&gt;
 	while (min_answer+1!=max_answer)&lt;br /&gt;
 	{&lt;br /&gt;
 		unsigned __int64 temp_target=(min_answer+max_answer)/2;&lt;br /&gt;
 		unsigned __int64 temp_result=1;&lt;br /&gt;
 		for (register unsigned __int64 i=0; i&amp;amp;lt;gaesu; ++i)&lt;br /&gt;
 			temp_result*=temp_target;&lt;br /&gt;
 		if (temp_result&amp;amp;gt;mokpyo)&lt;br /&gt;
 			max_answer=temp_target;&lt;br /&gt;
 		else if (temp_result&amp;amp;lt;mokpyo)&lt;br /&gt;
 			min_answer=temp_target;&lt;br /&gt;
 		else&lt;br /&gt;
 			return temp_target;&lt;br /&gt;
 	}&lt;br /&gt;
 	return FALSE;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void main()&lt;br /&gt;
 {&lt;br /&gt;
 	cout &amp;amp;lt;&amp;amp;lt; &amp;quot;결과값에 1을 입력할경우 프로그램이 끝납니다.\n&amp;quot;;&lt;br /&gt;
 	while (1)&lt;br /&gt;
 	{&lt;br /&gt;
 		unsigned __int64 intput_number=0;&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; &amp;quot;제곱한 결과값을 입력해주세요. &amp;amp;gt;&amp;amp;gt;&amp;quot;;&lt;br /&gt;
 		while (intput_number&amp;amp;lt;1)&lt;br /&gt;
 			scanf(&amp;quot;%I64d&amp;quot;,intput_number);&lt;br /&gt;
 		if (1==intput_number)&lt;br /&gt;
 			break;&lt;br /&gt;
 		unsigned __int64 gob_gaesu=0;&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; &amp;quot;제곱한 회수를 입력해주세요. &amp;amp;gt;&amp;amp;gt;&amp;quot;;&lt;br /&gt;
 		while (intput_number&amp;amp;lt;gob_gaesu || gob_gaesu&amp;amp;lt;1)&lt;br /&gt;
 			scanf(&amp;quot;%I64d&amp;quot;,gob_gaesu);&lt;br /&gt;
 		unsigned __int64 answer=such_target_number(intput_number,gob_gaesu);&lt;br /&gt;
 		if (FALSE==answer)&lt;br /&gt;
 			cout &amp;amp;lt;&amp;amp;lt; &amp;quot;잘못된 값을 입력하였습니다.\n&amp;quot;;&lt;br /&gt;
 		else&lt;br /&gt;
 			cout &amp;amp;lt;&amp;amp;lt; &amp;quot;결과값은 &amp;quot; &amp;amp;lt;&amp;amp;lt;answer &amp;amp;lt;&amp;amp;lt; &amp;quot; 입니다.\n&amp;quot;;&lt;br /&gt;
 	}&lt;br /&gt;
 	cout &amp;amp;lt;&amp;amp;lt; &amp;quot;이용해주셔서 감사합니다.\n&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
=== 두번째 소스 ===&lt;br /&gt;
 #include &amp;amp;lt;iostream&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;conio.h&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 using namespace std;&lt;br /&gt;
 const int TRUE=1;&lt;br /&gt;
 const int FALSE=0;&lt;br /&gt;
 const int ENTER=13;&lt;br /&gt;
 const unsigned __int64 MAX_LONG=1000000000000000000;&lt;br /&gt;
 &lt;br /&gt;
 class save_number{&lt;br /&gt;
 private:&lt;br /&gt;
 	unsigned __int64 number;&lt;br /&gt;
 	save_number *next;&lt;br /&gt;
 	save_number *prv;&lt;br /&gt;
 public:&lt;br /&gt;
 	save_number(int input_number, save_number *who_next)&lt;br /&gt;
 	{&lt;br /&gt;
 		number=input_number;&lt;br /&gt;
 		next=who_next;&lt;br /&gt;
 		prv=NULL;&lt;br /&gt;
 		if (NULL!=who_next)&lt;br /&gt;
 			who_next-&amp;amp;gt;link(this);&lt;br /&gt;
 	}&lt;br /&gt;
 	save_number(save_number *input_number, save_number *who_next)&lt;br /&gt;
 	{&lt;br /&gt;
 		number=0;&lt;br /&gt;
 		next=who_next;&lt;br /&gt;
 		prv=NULL;&lt;br /&gt;
 		if (NULL!=who_next)&lt;br /&gt;
 			who_next-&amp;amp;gt;link(this);&lt;br /&gt;
 		plus_number(input_number);&lt;br /&gt;
 	}&lt;br /&gt;
 	~save_number()&lt;br /&gt;
 	{&lt;br /&gt;
 		if (prv!=NULL)&lt;br /&gt;
 			delete prv;&lt;br /&gt;
 	}&lt;br /&gt;
 	void link(save_number *new_prv)&lt;br /&gt;
 	{&lt;br /&gt;
 		prv=new_prv;&lt;br /&gt;
 	}&lt;br /&gt;
 	save_number *get_prv()&lt;br /&gt;
 	{&lt;br /&gt;
 		return prv;&lt;br /&gt;
 	}&lt;br /&gt;
 	save_number *get_next()&lt;br /&gt;
 	{&lt;br /&gt;
 		return next;&lt;br /&gt;
 	}&lt;br /&gt;
 	void ollim()&lt;br /&gt;
 	{&lt;br /&gt;
 		if (prv!=NULL)&lt;br /&gt;
 		{&lt;br /&gt;
 			prv-&amp;amp;gt;number_input(number/MAX_LONG);&lt;br /&gt;
 			number%=MAX_LONG;&lt;br /&gt;
 		}&lt;br /&gt;
 		else&lt;br /&gt;
 		{&lt;br /&gt;
 			prv=new save_number(number/MAX_LONG,this);&lt;br /&gt;
 			number%=MAX_LONG;&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	void plus_ollim()&lt;br /&gt;
 	{&lt;br /&gt;
 		if (prv!=NULL)&lt;br /&gt;
 		{&lt;br /&gt;
 			prv-&amp;amp;gt;plus_number_unsigned(number/MAX_LONG);&lt;br /&gt;
 			number%=MAX_LONG;&lt;br /&gt;
 		}&lt;br /&gt;
 		else&lt;br /&gt;
 		{&lt;br /&gt;
 			prv=new save_number(number/MAX_LONG,this);&lt;br /&gt;
 			number%=MAX_LONG;&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	int number_input(int input_number)&lt;br /&gt;
 	{&lt;br /&gt;
 		if (input_number&amp;amp;gt;9 || input_number&amp;amp;lt;0)&lt;br /&gt;
 			return FALSE;&lt;br /&gt;
 		number*=10;&lt;br /&gt;
 		number+=input_number;&lt;br /&gt;
 		if (number&amp;amp;gt;=MAX_LONG)&lt;br /&gt;
 			ollim();&lt;br /&gt;
 		return TRUE;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	unsigned __int64 call_number(int where_number)&lt;br /&gt;
 	{&lt;br /&gt;
 		if (0==where_number)&lt;br /&gt;
 			return number;&lt;br /&gt;
 		if (prv==NULL)&lt;br /&gt;
 			return MAX_LONG;&lt;br /&gt;
 		return prv-&amp;amp;gt;call_number(where_number-1);&lt;br /&gt;
 	}&lt;br /&gt;
 	void plus_number_unsigned(unsigned __int64 plus_input_number)&lt;br /&gt;
 	{&lt;br /&gt;
 		number+=plus_input_number;&lt;br /&gt;
 		if (number&amp;amp;gt;=MAX_LONG)&lt;br /&gt;
 			plus_ollim();&lt;br /&gt;
 	}&lt;br /&gt;
 	int plus_number(int plus_input_number)&lt;br /&gt;
 	{&lt;br /&gt;
 		if (plus_input_number&amp;amp;lt;0)&lt;br /&gt;
 			return FALSE;&lt;br /&gt;
 		plus_number_unsigned( plus_input_number);&lt;br /&gt;
 		return TRUE;&lt;br /&gt;
 	}&lt;br /&gt;
 	void plus_number(save_number *plus_target)&lt;br /&gt;
 	{&lt;br /&gt;
 		save_number *target=this;&lt;br /&gt;
 		register int i=0;&lt;br /&gt;
 		unsigned __int64 get_number;&lt;br /&gt;
 		while (1)&lt;br /&gt;
 		{&lt;br /&gt;
 			get_number=plus_target-&amp;amp;gt;call_number(i);&lt;br /&gt;
 			if (MAX_LONG==get_number)&lt;br /&gt;
 				break;&lt;br /&gt;
 			this-&amp;amp;gt;plus_number_unsigned(get_number);&lt;br /&gt;
 			if (target-&amp;amp;gt;get_prv()==NULL)&lt;br /&gt;
 				break;&lt;br /&gt;
 			target=target-&amp;amp;gt;get_prv();&lt;br /&gt;
 			++i;&lt;br /&gt;
 		}&lt;br /&gt;
 		while (1)&lt;br /&gt;
 		{&lt;br /&gt;
 			++i;&lt;br /&gt;
 			get_number=plus_target-&amp;amp;gt;call_number(i);&lt;br /&gt;
 			if (MAX_LONG==get_number)&lt;br /&gt;
 				break;&lt;br /&gt;
 			target=new save_number(get_number,target);&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	int compare_number(unsigned __int64 target_number)&lt;br /&gt;
 	{&lt;br /&gt;
 		if (number&amp;amp;lt;target_number)&lt;br /&gt;
 			return 1;&lt;br /&gt;
 		if (number&amp;amp;gt;target_number)&lt;br /&gt;
 			return -1;&lt;br /&gt;
 		return 0;&lt;br /&gt;
 	}&lt;br /&gt;
 	int compare_number(save_number *target_number)&lt;br /&gt;
 	{&lt;br /&gt;
 		register int i=0;&lt;br /&gt;
 		unsigned __int64 this_number=0;&lt;br /&gt;
 		unsigned __int64 taget_get_number=0;&lt;br /&gt;
 		while (this_number!=MAX_LONG)&lt;br /&gt;
 		{&lt;br /&gt;
 			if (taget_get_number==MAX_LONG)&lt;br /&gt;
 				return -1;&lt;br /&gt;
 			this_number=call_number(i);&lt;br /&gt;
 			taget_get_number=target_number-&amp;amp;gt;call_number(i);&lt;br /&gt;
 			++i;&lt;br /&gt;
 		}&lt;br /&gt;
 		if (taget_get_number!=MAX_LONG)&lt;br /&gt;
 			return 1;&lt;br /&gt;
 		while (1)&lt;br /&gt;
 		{&lt;br /&gt;
 			this_number=call_number(i);&lt;br /&gt;
 			taget_get_number=target_number-&amp;amp;gt;call_number(i);&lt;br /&gt;
 			if (this_number==taget_get_number &amp;amp;amp;&amp;amp;amp; 0==i)&lt;br /&gt;
 				return 0;&lt;br /&gt;
 			this_number%=MAX_LONG; taget_get_number%=MAX_LONG;&lt;br /&gt;
 			if (this_number&amp;amp;lt;taget_get_number)&lt;br /&gt;
 				return 1;&lt;br /&gt;
 			if (this_number&amp;amp;gt;taget_get_number)&lt;br /&gt;
 				return -1;&lt;br /&gt;
 			--i;&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	int nanugi_2()&lt;br /&gt;
 	{&lt;br /&gt;
 		if (NULL!=prv)&lt;br /&gt;
 		{&lt;br /&gt;
 			if (1==prv-&amp;amp;gt;nanugi_2())&lt;br /&gt;
 				number+=MAX_LONG;&lt;br /&gt;
 			if (0==prv-&amp;amp;gt;call_number(0))&lt;br /&gt;
 			{&lt;br /&gt;
 				delete prv;&lt;br /&gt;
 				prv=NULL;&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
 		if (1==number%2)&lt;br /&gt;
 		{&lt;br /&gt;
 			number/=2;&lt;br /&gt;
 			return 1;&lt;br /&gt;
 		}&lt;br /&gt;
 		number/=2;&lt;br /&gt;
 		return 0;&lt;br /&gt;
 	}&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 void print_number(save_number *target)&lt;br /&gt;
 {&lt;br /&gt;
 	save_number *temp_number=target;&lt;br /&gt;
 	while(NULL!=temp_number-&amp;amp;gt;get_prv())&lt;br /&gt;
 		temp_number=temp_number-&amp;amp;gt;get_prv();&lt;br /&gt;
 	while (NULL!=temp_number)&lt;br /&gt;
 	{&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; temp_number-&amp;amp;gt;call_number(0);&lt;br /&gt;
 		temp_number=temp_number-&amp;amp;gt;get_next();&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 save_number *such_target_number(save_number *mokpyo, save_number *gaesu)&lt;br /&gt;
 {&lt;br /&gt;
 	save_number *min_answer, *max_answer, *temp;&lt;br /&gt;
 	int result_compare;&lt;br /&gt;
 	min_answer=new save_number(1,NULL);&lt;br /&gt;
 	max_answer=new save_number(mokpyo,NULL);max_answer-&amp;amp;gt;plus_number(1);&lt;br /&gt;
 	temp=new save_number(min_answer,NULL);temp-&amp;amp;gt;plus_number(1);&lt;br /&gt;
 	result_compare=temp-&amp;amp;gt;compare_number(max_answer);&lt;br /&gt;
 	delete temp;&lt;br /&gt;
 	while (0!=result_compare)&lt;br /&gt;
 	{&lt;br /&gt;
 		save_number *temp_target, *temp_result;&lt;br /&gt;
 		temp_target=new save_number(min_answer,NULL);&lt;br /&gt;
 		temp_target-&amp;amp;gt;plus_number(max_answer);temp_target-&amp;amp;gt;nanugi_2();&lt;br /&gt;
 		temp_result=new save_number(1,NULL);&lt;br /&gt;
 		save_number *i=new save_number(0,NULL);&lt;br /&gt;
 		while(0!=i-&amp;amp;gt;compare_number(gaesu))&lt;br /&gt;
 		{&lt;br /&gt;
 			save_number *j=new save_number(1,NULL);&lt;br /&gt;
 			save_number *temp_plus=new save_number(temp_result,NULL);&lt;br /&gt;
 			while (0!=j-&amp;amp;gt;compare_number(temp_target))&lt;br /&gt;
 			{&lt;br /&gt;
 				temp_result-&amp;amp;gt;plus_number(temp_plus);&lt;br /&gt;
 				j-&amp;amp;gt;plus_number(1);&lt;br /&gt;
 			}&lt;br /&gt;
 			delete j;&lt;br /&gt;
 			delete temp_plus;&lt;br /&gt;
 			i-&amp;amp;gt;plus_number(1);&lt;br /&gt;
 		}&lt;br /&gt;
 		delete i;&lt;br /&gt;
 		int result_compare_second=temp_result-&amp;amp;gt;compare_number(mokpyo);&lt;br /&gt;
 		if (-1==result_compare_second)&lt;br /&gt;
 		{&lt;br /&gt;
 			delete max_answer;&lt;br /&gt;
 			max_answer=new save_number(temp_target,NULL);&lt;br /&gt;
 		}&lt;br /&gt;
 		else if (1==result_compare_second)&lt;br /&gt;
 		{&lt;br /&gt;
 			delete min_answer;&lt;br /&gt;
 			min_answer=new save_number(temp_target,NULL);&lt;br /&gt;
 		}&lt;br /&gt;
 		else&lt;br /&gt;
 		{&lt;br /&gt;
 			delete min_answer;delete max_answer;delete temp_result;&lt;br /&gt;
 			return temp_target;&lt;br /&gt;
 		}&lt;br /&gt;
 		temp=new save_number(min_answer,NULL);temp-&amp;amp;gt;plus_number(1);&lt;br /&gt;
 		result_compare=temp-&amp;amp;gt;compare_number(max_answer);&lt;br /&gt;
 		delete temp;&lt;br /&gt;
 	}&lt;br /&gt;
 	return NULL;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void main()&lt;br /&gt;
 {&lt;br /&gt;
 	save_number *intput_number, *gob_gaesu;&lt;br /&gt;
 	intput_number=new save_number(0,NULL);&lt;br /&gt;
 	gob_gaesu=new save_number(0,NULL);&lt;br /&gt;
 	char temp=0;&lt;br /&gt;
 	cout &amp;amp;lt;&amp;amp;lt; &amp;quot;제곱한 결과값을 입력해주세요. &amp;amp;gt;&amp;amp;gt;&amp;quot;;&lt;br /&gt;
 	while (ENTER!=temp)&lt;br /&gt;
 	{&lt;br /&gt;
 		temp=getch();&lt;br /&gt;
 		if (47&amp;amp;lt;temp &amp;amp;amp;&amp;amp;amp; 58&amp;amp;gt;temp)&lt;br /&gt;
 		{&lt;br /&gt;
 			intput_number-&amp;amp;gt;number_input(temp-48);&lt;br /&gt;
 			cout &amp;amp;lt;&amp;amp;lt; temp;&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	temp=0; cout &amp;amp;lt;&amp;amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
 	cout &amp;amp;lt;&amp;amp;lt; &amp;quot;제곱한 회수를 입력해주세요. &amp;amp;gt;&amp;amp;gt;&amp;quot;;&lt;br /&gt;
 	while (ENTER!=temp)&lt;br /&gt;
 	{&lt;br /&gt;
 		temp=getch();&lt;br /&gt;
 		if (47&amp;amp;lt;temp &amp;amp;amp;&amp;amp;amp; 58&amp;amp;gt;temp)&lt;br /&gt;
 		{&lt;br /&gt;
 			gob_gaesu-&amp;amp;gt;number_input(temp-48);&lt;br /&gt;
 			cout &amp;amp;lt;&amp;amp;lt; temp;&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	cout &amp;amp;lt;&amp;amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
 	save_number *answer=such_target_number(intput_number,gob_gaesu);&lt;br /&gt;
 	if (NULL==answer)&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; &amp;quot;잘못된 값을 입력하였습니다.\n&amp;quot;;&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; &amp;quot;결과값은 &amp;quot;;&lt;br /&gt;
 		print_number(answer);&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; &amp;quot; 입니다.\n&amp;quot;;&lt;br /&gt;
 		delete answer;&lt;br /&gt;
 	}&lt;br /&gt;
 	cout &amp;amp;lt;&amp;amp;lt; &amp;quot;이용해주셔서 감사합니다.\n&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== 나에게 할말 ==&lt;br /&gt;
int 형을 64비트로 했군. -_-. 생각해보자. 파이썬처럼 거의 무한대자리까지 연산하려면 어떻게 해야할까??? - [[이영호]]&lt;br /&gt;
 └간단하게 파이썬이랑 결합하면 되요오오~~&amp;gt;ㅃ&amp;lt;;;; ㅎㅎㅎㅎ&lt;br /&gt;
   필요할때마다 malloc으로 할당하고 포인터로 넘겨서 연산하는 방법이 있습니다만....(귀찮다...귀찮다..귀찮다..윽.. 이게 아니잖아!!) -[[조현태]]&lt;br /&gt;
   └음... 그거 내가 고등학교때 짜다가 포기했던 방법이네 ㅋㅋㅋ 나중에 가니 꽤나 복잡해져서...&lt;br /&gt;
     암튼 요즈음 방법으로는... __int64 를 만드는 방법으로... assembly를 이용하면 엄청 간단해지더군 -_-...&lt;br /&gt;
     한번 공부하고 만들어봐... C언어에서 인라인 어셈 써서 함수 만들어두 좋구. 아래 참고. - [[이영호]]&lt;br /&gt;
 -----------c언어 소스-------&lt;br /&gt;
  2982:                     __int64 a,b;&lt;br /&gt;
  2983:&lt;br /&gt;
  2984:                     a = 0xffffffffffffffff;&lt;br /&gt;
  2985:                     b = a-1;&lt;br /&gt;
 ----------디셈블리소스------&lt;br /&gt;
  00415183   mov         dword ptr [a],0FFFFFFFFh&lt;br /&gt;
  0041518A   mov         dword ptr [ebp-4],0FFFFFFFFh&lt;br /&gt;
  00415191   mov         eax,dword ptr [a]&lt;br /&gt;
  00415194   sub         eax,1&lt;br /&gt;
  00415197   mov         ecx,dword ptr [ebp-4]&lt;br /&gt;
  0041519A   sbb         ecx,0&lt;br /&gt;
  0041519D   mov         dword ptr [b],eax&lt;br /&gt;
  004151A0   mov         dword ptr [ebp-0Ch],ecx&lt;br /&gt;
 ;;ㅁ;; 음.. 영호선배는 넘흐 마니 알고이쩡..&amp;gt;ㅃ&amp;lt;;; C언어 소스 봐도 모르게떠용..ㅎㅎ 64비트형의 인트형의 변수를 두개 지정하고 a에다가 최대값을..(아마 부호가 있기 때문에 -1저장&amp;amp;#46124;을듯한..)넣고 b에는 a-1을.. 그럼 -2가 저장..;; 음.. 이게 아니라 혹시 b가 포인터라서 메모리 한칸 앞쪽을 잡아주는 건가요? 음.. 그러면 할당되지않은 메모리를 건드는 사태가..;;ㅁ;; 이것도 아닌가.. 연구를..;;ㅁ;; - [[조현태]]&lt;br /&gt;
----&lt;br /&gt;
[[PowerOfCryptography]] [[LittleAOI]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>