2**2**5  은 (2**2)**5  와 2**(2**5) 중에 어느 것과 같을까?
즉, 지수 연산자 **는 왼쪽에서 오른쪽으로(left to right) 진행할까?
아니면 오른쪽에서 왼쪽으로(right to left) 진행할까?

만일 2**2**5 == (2**2)**5  라면 그 결과는 2**10 과 같을 것이고,
만일  2**2**5 == 2**(2**5)  라면 그 결과는 2**32 과 같을 것이다.

* 미리 결론을 말하면 Groovy 언어에서는 지수 계산의 순서가 다른 언어(Python. Ruby, Maxima 등)의 것과는 다르다는 것이다.


1. groovy 의 경우

groovysh 로 테스트하였다.

Groovy Shell (1.7.3, JVM: 1.6.0_17)
Type 'help' or '\h' for help.
-------------------------------------------------------------------------------
groovy:000> println(2**5)
32
===> null
groovy:000> println(5**2)
25
===> null
groovy:000> println(2**2**5)
1024
===> null
groovy:000> exit




2. python의 경우

python으로 테스트하였다.

Python 2.6.4 (r264:75708, Oct 26 2009, 08:23:19) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print 2**5
32
>>> print 5**2
25
>>> print 2**2**5
4294967296




3. ruby 의 경우

irb로 테스트하였다.

irb(main):001:0> print "%d\n" % (2**5)
32
=> nil
irb(main):002:0> print "%d\n" % (5**2)
25
=> nil
irb(main):003:0> print "%d\n" % (2**2**5)
4294967296
=> nil
irb(main):004:0> exit




4. wxMaxima 의 경우

wxMaxima로 테스트하였다.




Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

Posted by Scripter
,