저는 10 비트 바이너리 문자열을 가지고 있고 반복적으로 비트 단위로 순환 쉬프트해야합니다. 나는 너무 혼란스럽고 잃어 버렸습니다. 그것 뒤에있는 논리는 쉽게 할 수 있습니까? 16 진수 일 경우 num >> 1 또는 num < < 1을 사용할 수 있지만 비트 시프트를 적용하기 전에 "1010101010"과 같은 문자열을 16 진수로 변환해야합니다. 나는 bitwise shift를 순환 적으로 10 번 적용해야한다.Java에서 이진 문자열을 비트 시프트하는 방법은 무엇입니까?
답변
일반적으로 말하기를 숫자 작업을 수행하려는 경우 번호에 적용하는 것이 가장 좋습니다. 그래서 문자열을 int (또는 무엇이든) 실제로 변환하는 것이 좋습니다. 그런 다음 비트 이동을 수행 한 다음 필요한 경우 문자열로 되돌릴 수 있습니다.
텍스트 작업 만 수행하려는 경우 StringBuffer를 사용하여 문자로 재생할 수 있습니다.
StringBuffer s = new StringBuffer("1010101010");
for(int i=0; i<10; i++) {
char c = s.charAt(0);
s.append(c);
s.deleteCharAt(0);
}
String result = s.toString();
하지만 당신은 단지 수학을하려고 노력한다면 그건 그냥 추한
바이너리 문자열로/변환 할 수있는 정수 클래스의 방법이 있습니다.
int i = Integer.parseInt("1010101010", 2);
String shiftedi = Integer.toBinaryString(i<<1);
편집, 위하지만 원형 아니지만, 당신은 간단한 문자열 작업을 사용할 수 있습니다
String in = "1010101010";
String shifted1 = in.substring(1)+in.substring(0,1);
int bits = Integer.parseInt ("010101010", 2);
가 INT로 문자열을 변환합니다. "비트 시프트를 적용하기 전에 16 진수로 변환"은 말도 안되는 일입니다 - 죄송합니다. 16 진수는 int (예를 들어)를 나타내는 방법 일뿐입니다. int 값을 이동합니다. 표현이 아닙니다.
0과 1을 포함한 String
(일명 "2 진 문자열")을 처리한다고 가정하면 비트 단위로 쉬프트하는 것이 쉽습니다.
"왼쪽으로 시프트"하려면 "왼쪽 시프트"마다 오른쪽 끝에 "0"문자를 추가하십시오.
"오른쪽으로 이동"하려면 일이 좀 더 복잡합니다. 바이너리에서 항상 "양수"를 처리한다고 가정 할 때, "오른쪽 이동"마다 오른쪽 끝에있는 문자를 제거하십시오. "부호 확장 시프트 권한"을 수행하려면 문자열의 길이를 검사하여 이진 값의 특정 인코딩에 대한 2의 보수 형식 인 "최대 길이"인지 확인해야합니다. 맨 오른쪽 문자가 이미 "1"인 경우 선택적으로 왼쪽에 "1"문자를 추가하십시오. 문자열 (단어와 DWORD에 이을하는 동안) 길이에 제약을받지 않기 때문에
지금, >>>
운영자 이진 문자열을 의미하게, 또는 음수을의 경우에도 2의 보수 표현인지 명확하지 않다 문자열의 유효한 문자 수에 "제한"을 두지 않는 한 이진 문자열에 대해 의미가 있습니다. 두 개의 이진 문자열 사이에 이진수 연산을 원한다면이 제한은 두 이진 문자열에 대해 동일해야합니다 (또는 작은 문자열에 대한 수준 올리기 규칙이 있어야 함).
다른 옵션은 문자열을 정수로 변환하고 정수에 대해 이진 연산을 사용하는 것입니다.
- 1. u16 *의 데이터를 비트 시프트하는 방법은 무엇입니까?
- 2. VB.NET에서 비트 시프트하는 방법?
- 3. MSB를 1로 채워 이진수를 시프트하는 방법은 무엇입니까?
- 4. Java에서 이진 plist를 만드시겠습니까?
- 5. 파이썬에서 문자열을 이진 값으로 연결하는 방법은 무엇입니까?
- 6. Java에서 비트 시퀀스 구성
- 7. Java에서 비트 정렬 프로그램을 작성하는 방법은 무엇입니까?
- 8. Java에서 비트 벡터 (비트 세트)를 구현하는 방법은 무엇입니까?
- 9. java에서 문자열을 XML로 변환하는 방법은 무엇입니까?
- 10. Java에서 스트링별로 중국어 문자열을 정렬하는 방법은 무엇입니까?
- 11. Java에서 S3에 문자열을 직접 작성하는 방법은 무엇입니까?
- 12. java에서 런타임시 문자열을 디코딩하는 방법은 무엇입니까?
- 13. Java에서 문자열을 정수로 변환
- 14. PHP는 파일의 비트 문자열을
- 15. C++에서 가변 길이 비트 문자열을 빠르게 비교하는 방법은 무엇입니까?
- 16. Java에서 이진 산술을위한 알고리즘
- 17. Java에서 이진 빼기
- 18. 이진 투명도를 나타내는 방법은 무엇입니까?
- 19. Excel VBA를 사용하여 이진 문자열을 정수 비트 배열로 변환하는 방법
- 20. Java에서 객체 배열에 이진 검색을 적용하는 방법은 무엇입니까?
- 21. 이진 문자열을 파일에 쓰기
- 22. 이진 데이터 문자열을 C#
- 23. 이진 문자열을 빌드하십시오. C++
- 24. 이진 표현식 계산 - 문자열을 이진 데이터로 변환
- 25. 동일한 이진 하위 문자열을 사용하여 다음 정수를 찾는 방법은 무엇입니까?
- 26. 문자열을 이진 코드로 변환하여 파일을 작성하는 방법은 무엇입니까? 또한 데이터베이스에
- 27. Ruby - 이진 문자열을 일반 문자열로 언팩하는 방법은 무엇입니까?
- 28. 원시 (이진) ctype 버퍼에서 파이썬 문자열을 작성하는 방법은 무엇입니까?
- 29. Java에서 이진 데이터를 관리하는 가장 좋은 유형은 무엇입니까?
- 30. 문자열의 이진 표현을 문자열로 변환하는 방법은 무엇입니까?
길이 10의 이진 문자열에 순환 시프트를 10 번 적용하면 null 연산이됩니다 ... –
이것이 숙제 문제입니까? (괜찮 으면, 그냥 하나의 태그를 붙여야한다.) – JRaymond
전혀 ... 나는 비트 조작과 논리를 쓰기에 열정적이다. – volatNumbers