~
(गणित) ऑपरेटर सभी बिट्स flips , यह बिटवाइज़ निषेध ऑपरेटर कहा जाता है:
! ~ logical and bitwise negation
इसलिए, उन जगहों पर जहां संदर्भ अंकगणित है, यह एक संख्या को सभी बिट्स के साथ शून्य के रूप में सभी बिट्स में बदलता है। एक $(( ~0 ))
संख्या प्रतिनिधित्व के सभी बिट्स (आमतौर पर आजकल 64 बिट्स) को सभी लोगों तक पहुंचाता है।
$ printf '%x\n' "$(( ~0 ))"
ffffffffffffffff
सभी लोगों के साथ एक संख्या को नकारात्मक संख्या (पहले बिट 1
) 1
, या बस के रूप में व्याख्या की जाती है -1
।
$ printf '%x\n' "-1"
ffffffffffffffff
$ echo "$(( ~0 ))"
-1
वही अन्य सभी संख्याओं के लिए होता है, उदाहरण के लिए: $(( ~1 ))
सभी बिट्स को फ़्लिप करता है:
$ printf '%x\n' "$(( ~1 ))"
fffffffffffffffe
या, बाइनरी में: 1111111111111111111111111111111111111111111111111111111111111110
जो, दो के प्रतिनिधित्व में एक संख्या के रूप में व्याख्या की गई है:
$ echo "$(( ~1 ))"
-2
सामान्य तौर पर, मानव गणित समीकरण वह है $(( ~n ))
जो समान है$(( -n-1 ))
$ n=0 ; echo "$(( ~n )) $(( -n-1 ))"
-1 -1
$ n=1 ; echo "$(( ~n )) $(( -n-1 ))"
-2 -2
$ n=255 ; echo "$(( ~n )) $(( -n-1 ))"
-256 -256
और (आपका प्रश्न):
$ n=33 ; echo "$(( ~n )) $(( -n-1 ))"
-34 -34