2012-03-07 12 views
9

64bits सिस्टम:पर्ल में समतुल्य 'int, छोटा, लंबा' है?

$i=2;print ~$i; # 18446744073709551613 

32bits सिस्टम:

$i=2;print ~$i; # 4294967293 

मैं कैसे $i 32 बिट कर सकते हैं?

मैं किसी भी प्रणाली में पर्ल में एक पोर्टेबल बिटवाइज़ आपरेशन की जरूरत है।

+0

अपने शीर्षक सवाल का जवाब है 'नहीं'; पर्ल में 'int', 'short' या' long' के समकक्ष नहीं हैं। –

उत्तर

1

पर्ल में पोर्टेबल बिटवाइज़ अभियानों के लिए, CPAN पर Bit::Vector library की जाँच करें।

यह उदाहरण के लिए, बिटवाइज़ संचालन की एक विस्तृत श्रृंखला का समर्थन करता है:

use Bit::Vector; 

my $vector = Bit::Vector->new_Dec(32, "2"); # 32-bit vector for the decimal value 2 
$vector->Negate($vector); 
10

बस थोड़ा सा-और परिणाम 0xffffffff के साथ परिणाम। इसका 32-बिट सिस्टम पर कोई प्रभाव नहीं पड़ेगा, और 64-बिट सिस्टम पर आपको निम्न-आदेश 32 बिट्स देगा, जो आप चाहते हैं।

संबंधित मुद्दे