2012-07-13 3 views
6

가능한 중복은 : 루비에서 사용되는 것은 무엇입니까?


Use of caret symbol(^) in Ruby

그래서 나는 몇 가지 코드로 주위를 연주하고 있었고, 난 전원 연산자로 놀러 시도했다. 그래서 나는 아마도 내가이 목적을 위해 캐럿 ( ^)를 사용할 수 있다고 생각하지만, 그것을 사용 후 :

for i in 0..10 
    puts "#{i} #{1^i}\n" 
end 

나는 정말 펑키 결과

0 - 1 
1 - 0 
2 - 3 
3 - 2 
4 - 5 
5 - 4 
6 - 7 
7 - 6 
8 - 9 
9 - 8 
10 - 11 

나는이 볼 수있는 유일한 패턴을 가지고 - 내가하려고 할 때 홀수 1과 짝수에 +1,하지만 :

for i in 0..10 
    puts "#{i} #{2^i}\n" 
end 

를 내가 얻을 :

0 - 2 
1 - 3 
2 - 0 
3 - 1 
4 - 6 
5 - 7 
6 - 4 
7 - 5 
8 - 10 
9 - 11 
10 - 8 

wth! 그래서 그때 나는 4^i까지 계속해서 그랬고, 1^i & 3^idecent patterns으로 나왔습니다. 그러나 2^i & 4^i은 단지 11 개의 플로팅 포인트만으로 보이는 패턴이 전혀 보이지 않았기 때문에 숙녀 여러분에게 왔습니다. 당신에게 묻는 신사 :

^은 (는) 다음에서 무엇을 사용하고 있습니까?!

+0

XOR 연산자라고 생각합니다. – Gumbo

+1

가끔은 내가 커뮤니티를 얻지 못한다. 왜 바보가 http://stackoverflow.com/questions/11464250/using-in-ruby 질문에 +2 upvotes가 있는데,이 하나가 downvotes를 계속받는 동안? – ted

+0

@ted 질문에 대한 조사가 제대로 이루어지지 않았거나, 충분한 정보를 포함하지 못하거나, 이해하기가 어려웠 기 때문에 질문이 내려졌습니다. 이것은 "캐럿 연산자 루비 (cachet operator ruby)"에 대한 빠른 웹 검색이 질문에 대답했을 것이기 때문에 전자의 경우입니다. – coreyward

답변

18

대부분의 프로그래밍 언어에서 ^은 배타적 논리합 연산자 (Exclusive Or in Wikipedia)입니다. XOR은 CPU에서 가장 필수적인 연산 중 하나입니다.이 연산은 빠르며 짧은 opcode가 있으므로 0 레지스터에 자주 사용됩니다 (a ^= a).

전원 기능의 경우 예를 들어 다음을 사용해야합니다. ** (예를 들어, 루비 등), java.lang.Math.pow, math.pow, pow

사실, 내가 ^를 사용하는 프로그래밍 언어의 이름을 수 없었다. LaTeX에서 포맷팅을 위해 사용됩니다 (기술적으로 힘 기능이 아닌 위첨자로 사용). 하지만 항상 볼 수있는 두 가지 변종은 **이며 (전력 함수는 곱셈과 직접 관련이 있습니다) pow(base, exp)입니다.

교대로 2의 정수 배를 빠르게 계산할 수 있습니다.

+4

Ruby 질문에 대답한다면 Ruby 문법을 사용하는 것이 현명합니다. Ruby 문법의 지수 연산자는'**'입니다. – coreyward

+0

저는 얼마 전만 Ruby를 사용했습니다. 그 행동이 XOR 이었음이 분명했습니다. 고마워, 내가 추가 할게. –

+1

'3 << 4는 매우 빠르고 빠르며 3 ** 16보다 훨씬 빠릅니다. 이것을 확인하셨습니까? 파이썬과 루비 같은 스크립팅 언어는 이진 곱하기/힘을 구현한다고 가정합니다. – ted

관련 문제