كيفية إنتاج 64 أقنعة بت؟
سؤال
واستنادا إلى برنامج بسيط التالية المختصة بالبت ترك المشغل التحول يعمل فقط لمدة 32 بت. هل هذا صحيح؟
#include <iostream>
#include <stdlib.h>
using namespace std;
int main(void)
{
long long currentTrafficTypeValueDec;
int input;
cout << "Enter input:" << endl;
cin >> input;
currentTrafficTypeValueDec = 1 << (input - 1);
cout << currentTrafficTypeValueDec << endl;
cout << (1 << (input - 1)) << endl;
return 0;
}
وإخراج البرنامج:
Enter input:
30
536870912
536870912
Enter input:
62
536870912
536870912
وكيف يمكن أن تنتج أقنعة 64 بت؟
المحلول
تأكد مدخلات لفترة طويلة طويلة جدا، واستخدام 1LL << (المدخلات - 1LL). هنا يتم احتساب تحول الخاصة بك على 32 بت، وتحويلها إلى 64 بت عند تخزينها في currentTrafficTypeValueDec.
لا تنتمي إلى StackOverflow