2012-08-09 5 views
0

내가 실제로 달성하고자하는 것은 다음과 같습니다 : 1) 테이블 또는 2D 비트 어레이, 2 열 생성 - 행은 길이가 될 수 있습니다. 참조 할 수 있도록 열 이름을 지정하십시오. 3)이 배열의 개별 비트를 설정할 수 있습니다 4) 데이터가 테이블에 저장되면 테이블 객체를 파일에 쓰고 싶습니다. 각 셀의 데이터가 하드 드라이브의 1 비트를 차지하므로 메모리의 표 개체 크기가 lons가 아닌 것에 신경 쓰지 않습니다. 테이블 객체의 크기가 10 바이트이고 테이블에 16 비트를 저장했다고 가정 해 봅시다. 파일에 쓰면 총 12 바이트가됩니다.어떻게 각 셀에 저장된 데이터가 하드 드라이브의 크기가 1 비트 인 Java에서 2D 비트 배열을 생성합니까?

프로그래밍에 익숙하지 않으므로 명확히하지 않으면 실례합니다. 귀하의 지식에 감사드립니다.

답변

3

모든 2D 배열은 1D 배열을 사용하여 구현할 수 있습니다. m 행과 n 열의 2D 배열을 예로 들어 보겠습니다. 이 경우, 동등한 1D 배열의 크기는 m * n이됩니다.

2D [i, j]는 1D [i * n + j]와 동일합니다. 여기서 i는 행 색인이고 j는 열 색인입니다.

자바에서는 1D 비트 배열을 구현하는 데 BitSet을 사용합니다. BitSet 클래스는 직렬화 가능 클래스이므로 디스크에 저장할 수 있습니다. bitset 객체를 하드 디스크에 저장할 때 최종적으로 얼마나 많은 공간이 필요한지에 대한 더 많은 연구가 필요할 수 있습니다.

+0

Niraj님께 감사드립니다. BitSet에 대해 조금 읽었습니다. 주제에 관해 더 많은 조사를 해 어떤 결과가 나오는지 봅니다. – user1586654

-1

하드 드라이브에 비트를 저장할 수 없습니다.

예를 들어 자바에서 char 데이터 유형이 4 비트를 차지하고 thats가 사용할 수있는 simples 데이터 유형입니다.

+0

BitArray 개념에 대해 읽어보십시오. 요청시 2 비트의 16 비트를 저장할 수 있습니다. 예, 17 비트는 3 바이트를 사용하지만 다시 24 비트는 동일한 메모리를 요구합니다. –

+0

정보를 제공해 주셔서 감사합니다. 사실 저는 하드 드라이브에 1 비트를 저장하려고하지 않습니다. 배열 인덱스에 저장된 데이터가 각각 1 비트가되도록합니다. 그래서 일단 배열 객체를 파일에 쓰면, 프로그램은 원시 타입의 메모리 크기에 contect를 더한 것을 지정합니다.이 크기는 행의 수에 따라 1 비트 * n 비트입니다. 이 배열에는 두 개의 열만 있어야합니다. 감사. – user1586654