2014-02-19 2 views
1

bitstype은 어떻게 사용할 수 있습니까?비트 유형 생성

나는 Base.box/Base.unbox을 시도했지만 작동하지 않았습니다. 나는 reinterpret이 사용되어야한다고 읽었다. 그것은 일 :

bitstype 32 Blah32 
blah32 = reinterpret(Blah32, 8) 
# Blah32(0x00000008) 

그러나,이 방법을 사용하여, 내가, 예를 들어, 2048 비트를 가진 bitstype을 만들 수 없습니다.

bitstype을 사용하여 임의의 비트 수를 포함하는 유형을 만드는 방법은 무엇입니까?

답변

1

재 해석이 작동하기에 충분한 크기의 메모리 블록이 필요합니다.

bitstype 2048 Blah2048 
blah2048 = reinterpret(Blah2048, [1:32]) 

1-element Array{Blah2048,1}: 
Blah2048(0x0000000000000020000000000000001f000000000000001e000000000000001d000000000000001c000000000000001b000000000000001a0000000000000019000000000000001800000000000000170000000000000016000000000000001500000000000000140000000000000013000000000000001200000000000000110000000000000010000000000000000f000000000000000e000000000000000d000000000000000c000000000000000b000000000000000a000000000000000900000000000000080000000000000007000000000000000600000000000000050000000000000004000000000000000300000000000000020000000000000001) 

작동하지 않는다고 말하면 오류를 제공하면 좋을 것입니다. BoundsError()은 64 비트의 일반 정수 외부에서 메모리를 읽음을 나타 내기 때문에 사실 유익합니다.

또한. 왜 큰 비트 형식을 만들고 싶습니까? 프로세서가 지원하지 않으므로 에뮬레이션해야합니다. 사용법에 따라 추가 추상 레이어가 없어도 코드를 더 빨리 작성할 수 있습니다.

+0

2048 비트는 8로 나눌 수있는 임의의 숫자입니다 (버전 0.2 요구 사항). 나는'box' /'unbox'에 에러를 포함시키지 않았습니다. 사용해서는 안되기 때문입니다. 또한, 스탠자에 사소한 오류가 있습니다 :'blah2048 = reinterpret (Blah2048, [1:64])'. 그 후, 그것은 작동합니다. 고맙습니다. –

+1

32 비트 시스템을 사용하는 경우 총 64 비트를 얻으려면 32 비트 64 비트 정수 대신 64 비트 32 비트 정수가 필요합니다. – ivarne