سؤال

واستنادا إلى برنامج بسيط التالية المختصة بالبت ترك المشغل التحول يعمل فقط لمدة 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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top