2013-02-24 2 views
0

int를 바이너리로 변환하려고 시도하고 바이너리에서 비트 연산을 수행하려고합니다.int를 바이너리로 변환합니다. 비트 연산을 수행합니다.

현재 나의 방법은 int를 가져 와서 to_s(2)을 호출하지만 이진 문자열이 남았습니다.

내가해야 할 것에 대한 조언이 있으십니까?

+2

을에 수를 변환 * 모든 것은 * 바이너리 형식입니다. 유일한 차이점은 텍스트 표현입니다. 컴퓨터에는 10 진수 또는 16 진수 같은 것이 없습니다. 바이너리 만. – Linuxios

+0

글쎄, 실제로는 다른 내부 표현 (일반적으로 전통적인 부동 소수점 표현과 관련된 문제를 피하기 위해)을 사용할 수있는 실제 "십진법"유형을 가진 여러 라이브러리 또는 언어가 있습니다. 그러나 일반 "정수"유형은 거의 항상 내부에서 2 진수입니다. – nneonneo

+0

(그렇습니다. 어떤 표현도 가장 낮은 수준의 이진수로 나타납니다.) – nneonneo

답변

0

the_number.to_s(2).split('').map { |x| x.to_i } # 이진 배열

+1

왜 이것이 올바른 대답인지 설명하십시오. OP가 올바른 대답을 제공하면 OP가 그것에 대해서도 배울 수 있습니다. –

+0

여기에 요점이 나와 있습니다. 문자열을 통해 문자열 split을 매핑 한 다음 각 문자를 int로 변환 할 수 있습니다. –

+0

@BrianA 당신은 the_number.to_s (2) .to_i를 의미합니까? –

6

간단한 정수는 거의 모든 주요 프로그래밍 언어 (Ruby 포함)에 바이너리로 저장됩니다. 그래서, 당신은 정수 자체에 비트 연산을 수행 할 수 있습니다

>> 6 | 5 # bitwise or 
=> 7 
>> 6 & 5 # bitwise and 
=> 4 
>> 6^5 # bitwise xor 
=> 3 
>> 6 >> 2 # right shift 
=> 1 
>> 6 << 2 # left shift 
=> 24 

(편집 :. 이건 내 1000 해답이 될 것으로 보인다)

관련 문제