मैं एफ # के लिए नया हूं और मुझे समझ में नहीं आता कि एफ # में थोड़ा सा बदलाव कैसे काम करता है।

मैंने एफएसआई में नीचे दिए गए आदेश की कोशिश की।

> 4
- |>((<<<) 1uy);;

स्क्रीन शॉट नीचे जैसा है।

enter image description here

यह परिणाम 16uy क्यों है लेकिन 8uy नहीं है?

जब मैंने नीचे दिए गए आदेश की कोशिश की तो मुझे और भी भ्रमित कर दिया क्योंकि परिणाम 48uy है ...

> 4
- |>((<<<) 3uy);;

क्या आप मुझे बताएंगे कि यह कैसे काम करता है?

0
Tyam 5 अप्रैल 2020, 03:23

1 उत्तर

सबसे बढ़िया उत्तर

दस्तावेज़ीकरण< से /ए>:

बिटवाइज़ लेफ्ट-शिफ्ट ऑपरेटर। परिणाम पहला ऑपरेंड है जिसमें बिट्स दूसरे ऑपरेंड में बिट्स की संख्या से बायीं ओर स्थानांतरित हो जाते हैं। सबसे महत्वपूर्ण स्थिति से स्थानांतरित बिट्स को कम से कम महत्वपूर्ण स्थिति में नहीं घुमाया जाता है। कम से कम महत्वपूर्ण बिट्स शून्य के साथ गद्देदार होते हैं। दूसरे तर्क का प्रकार int32 है।

यह थोड़ी देर के बाद से मैंने एफ # का उपयोग किया है, लेकिन यह मानते हुए कि इसके ऑपरेटर प्रीफिक्सिंग हास्केल की तरह काम करता है, जिस तरह से आपने इसका इस्तेमाल किया है:

4 |> ((<<<) 1uy)

1 को बाएँ हाथ के तर्क के रूप में, और 4 को दाएँ हाथ के तर्क के रूप में लागू करेगा:

1 <<< 4

जो 16 होगा।

इसे बराबर करने के लिए 8, ऑपरेटर के चारों ओर कोष्ठक को हटाने का प्रयास करें (जिसका अर्थ है कि यह उपसर्ग नहीं किया जाएगा बल्कि इसके बजाय आंशिक रूप से दाएं हाथ के तर्क के साथ लागू किया जाएगा) प्राप्त करने के लिए:

4 |> (<<< 1uy)

और यह आपको 8 देना चाहिए, यह मानते हुए कि यह वैध F# सिंटैक्स है।

2
paul 5 अप्रैल 2020, 00:39