목표 C에서 임의의 정밀도 숫자의 표현에 대해 비트 연산을 수행해야합니다. 지금까지 NSData 객체를 사용하여 숫자를 저장했습니다. 그? 그렇지 않다면이를 달성하는 다른 방법이 있습니까?임의 정밀도 비트 조작 (목표 C)
0
A
답변
1
NSMutableData
을 사용하면 char
에서 바이트를 가져 와서 비트를 이동하고 -replaceBytesInRange:withBytes:
으로 바꿀 수 있습니다.
원시 데이터를 보유하기 위해 char *
버퍼를 사용하여 자신 만의 날짜 홀더 클래스를 쓰는 것을 제외하고는 다른 솔루션이 보이지 않습니다.
1
Apple은 임의로 정밀도를 지원하지 않습니다. vecLib의 1024 비트 정수보다 큰 값은 제공되지 않습니다.
나는 또한 NSData
이 교대와 롤을 제공한다고 생각하지 않는다. 그래서 당신은 당신 자신의 것을 굴려야 할 것입니다. 예 : 내가 직접 여기를 입력하고있어 일부 작은 오차가있을 수 있습니다 매우 순진 버전 : 당신이로 이동하고자하는 비트의 수를 가정 물론
@interface NSData (Shifts)
- (NSData *)dataByShiftingLeft:(NSUInteger)bitCount
{
// we'll work byte by byte
int wholeBytes = bitCount >> 3;
int extraBits = bitCount&7;
NSMutableData *newData = [NSMutableData dataWithLength:self.length + wholeBytes + (extraBits ? 1 : 0)];
if(extraBits)
{
uint8_t *sourceBytes = [self bytes];
uint8_t *destinationBytes = [newData mutableBytes];
for(int index = 0; index < self.length-1; index++)
{
destinationBytes[index] =
(sourceBytes[index] >> (8-extraBits)) |
(sourceBytes[index+1] << extraBits);
}
destinationBytes[index] = roll >> (8-extraBits);
}
else
/* just copy all of self into the beginning of newData */
return newData;
}
@end
는, 다른 사이, 그 자체 NSUInteger
로 표현할 수있다 죄.
관련 문제
- 1. 목표 - C 임의 점
- 2. JVM 임의 정밀도 라이브러리
- 3. 임의 정밀도 지수를 허용하는 C/C++ 용 임의 정밀도 부동 소수점 라이브러리가 있습니까?
- 4. Windows를 사용하는 C++의 임의 정밀도?
- 5. C#에서 임의 정밀도 산술 연산을 지원합니까?
- 6. J2ME의 임의 정밀도 소수 대체물
- 7. 임의 숫자 조작
- 8. C 비트 조작 문자 배열
- 9. 목표 C 문자열 조작, 엿보기, 추가하기
- 10. 임의 정밀도 (bignum) 정수에 대한 곱셈 알고리즘
- 11. 임의 정밀도 정수를 boost :: spirit으로 구문 분석
- 12. C#에서 BigInteger의 이진/비트 조작
- 13. ANSI C 용 비트 조작 라이브러리
- 14. C#의 비트 맵 바이트 조작
- 15. C++에서 비트 배열의 필드 조작
- 16. 고급 비트 조작 - 비트 스트림의 비트 멀티플렉싱
- 17. 목표 - C 열거 최대 (비트) 제한 (아이폰)
- 18. 안드로이드 비트 맵 조작
- 19. ByteArray에서 비트 조작
- 20. 문자 변수의 비트 조작
- 21. 목표 C -
- 22. .net의 임의 정밀도 부동 유형입니다. 그것을 허락하는 어떤 도서관?
- 23. C : 정수 승격으로 보장되는 8x8 -> 16 비트 곱셈 정밀도?
- 24. 32 비트 정수에서 비트 단위 조작
- 25. 비트 조작 연산자를 사용하는 비트 형식 변환
- 26. 목표 C에서 C로 변환 매트릭스 조작
- 27. 파이썬/C++ - 정밀도 차이가
- 28. 이중 정밀도 상실 C#
- 29. matlab 및 C++ 정밀도
- 30. C++ 정밀도 : Double to