현재 위치 - 주공해몽공식사이트 - 골격 점술 - 셸에서 비트 작업을 수행하는 방법

셸에서 비트 작업을 수행하는 방법

문법

$ ((...))

$ echo $(( 3 * 4 )) 12

일부 장면에서는 특정 작업의 검증과 같은 프로그램 작성의 번거로움을 해소할 수 있도록 특히 편리합니다.

다음은 컴퓨팅 시스템 연습 2. 12 에 대한 심층적인 이해를 검증하는 시나리오입니다.

표현식 ~0 은 전체 1 의 마스크를 생성합니다. 기계의 글자 길이 크기에 관계없이 이식이 가능합니다.

$ printf "%x \ n" $ (~ 0)) ffffffffffffffffffff fff

$ printf "%# x \ n" $ (~ 0)) 0x fffffffffffffffffffffff fff

위의 테스트에 따르면 셸에서 0 의 비트 반전은 64 비트입니다.

인쇄 쉘에 대한 printf 명령의 선행 문자: 쉘 스크립트 학습 안내서의 표 7-4 는 형식 매개변수에서 "#" 기호의 의미를 설명하고 "#" 를 사용하여 선행 문자 "0x" (16 16 진수) 를 출력할 수 있습니다

X & amp0xFF 는 x 의 가장 낮은 유효 바이트로 구성된 값을 생성합니다.

$ printf "%# x \ n" $ ((0x89 abcdef & 0xFF ))0xef

$ printf "%# .8x \ n" $ ((0x89 abcdef & 0xFF ))0x000000ef

다음 x = 0x8765432 1

A.x 의 최소 유효 바이트 및 기타 모든 비트는 0 으로 설정됩니다.

$ printf "%# .8x \ n" $ ((0x87654321& 0xFF )) 0x0000002 1

$ printf "%# .8x \ n" $ ((0x87654321& -응? Bash: 0x87654321& -응? 0xFF: 구문 오류: 피연산자 필요 (오류 태그는'? 0xFF) 를 참조하십시오

책에 제시된 연습 문제의 답은 "X &;; -응? 0xFF ","? "여기 있습니다. 1 번호는 셸이 제대로 작동하지 않음을 확인합니다.

B x 의 가장 낮은 유효 바이트를 제외한 모든 위치가 보충되고 가장 낮은 유효 바이트는 그대로 유지됩니다.

$ printf "%# x" $ ((0x87654321~ 0xff)) 0xffffffffff789abc21

~0xff 가 64 비트 마스크를 생성하기 때문에 결과는 다소 의외지만 마지막 32 비트는 예상됐다.

C.x 의 최소 유효 바이트는 전체 1 으로 설정되고 다른 모든 바이트는 그대로 유지됩니다.

$ printf "%# x" $ ((0x87654321| 0xff)) 0x876543ff