نمایش نتایج 1 تا 12 از 12

نام تاپیک: چند سوال درباره عملگر های منطقی و بیتی

  1. #1

    چند سوال درباره عملگر های منطقی و بیتی

    سلام خدمت دوستان
    چند سوال درباره عملگر های منطقی و بیتی داشتم
    اول ایا فرقی بین این دو عملگر ها هست یعنی مثلا and در عملگر های منطقی با and در عملگرهای بیتی داره؟(و به همین منوال در بقیه عملگر های مشترک)
    دوم اینکه اگر در عملگر and را در یک برنامه داشته باشیم این عملگر تقدم کدام ارزش رو بیشتر داره منظورم اینه که غلط یا درست
    برای مثال
    (3>5) and (7<8)=f
    و به همین منوال در در دیگر عملگر ها
    برای مثال چنین عبارتی دارای چه ارزشی است؟
    not (((3-4 mod 3)<5) and ((6 div 4)<>3))
    لطفا مراحل محاسبه این رو بگید و ارجحیت با کدوم است کتاب رو خواندم ولی در شکم بنابراین سوال کردم که مشکلم حلشه
    ممنون

  2. #2

    نقل قول: چند سوال درباره عملگر های منطقی و بیتی

    سلام :
    And منطقی با یتی خوب تفاوت در نوع خروجی . منطقی خروجی بولین داره و بیتی خوب ریشته ای از بیتها . میشه اینطور تعبیر کرئ که بیتی همان منطقی است با این تفاوت که عملیات منطقی رو بر روی تک تک بیتها انجام میده و حاصل رو در بیت هم ارزش با اونها میریزه .
    در مورد دوین سوالت : یه مقدار سوالت مبهمه و اینجوری گفتی که عملگرهای منطقی نسبت به درست یا نادرست اولویت بیشترب دارن . خوب در حالی که این سوال غلطه چون مقادیر درست و نادرست به عنوان خروجی و یا ورودی عملگر های منطقی هستند . سوالت مثل اینه که بگب عملگر جمع نسبت به اعداد منفی اولویت داره یا مثبت .
    به گمانم منظورتون این بوده که اولویت کدام عملگر نسبت به دیگری بهتره .
    حالا اگر همین بوده سوالتون که جوابش اینه :
    در مواقعی که در مورد اولویت عملگرها نمیدونید خوب پرانتز بهترین راه حله و همیشه اول داخل پرانتز حل میشه و بحمدالله سوالتون هم کهسرشار از پرانتزه . اما خوب پرانتزاش جابه جا شده .
    اما اگه بخواین اولویت رو بدونید Not از همه اولویت بیشتری داره و باقی اولویت برابر یعنی از سمت چپ به راست بررسی میشن البته همون طور که میدونید این در حالتیه که پرانتز نباشه . اما خوب با پرانتز همه کار میشه کرد .
    not (((3-4 mod 3)<5) and ((6 div 4)<>3))h صورت سوالتون این بوده ؟
    تو این سوال not ناچارا دیرتر از همه اجرا میشه :
    حالا تو پرانتز اول پرانتز سمت چپ محاسبه میشه بعد پرانتز سمت راست :
    حال پرانتز سمت چپ :
    باز اول پرانتز داحل خودش یعنی (3-4 mod 3) حساب میشه و با 5 مقایسه میشه :
    خوب کلا حاصل پرانتز سمت چپ مشه True
    البته فکر میکنم اینجا یه خطای منطقی رخ بده (فکر میکنم نشه باقیمانده صحیح اعداد منفی رو گرفت حالا با فرض بر اینکه میشه جلو میرم )

    حالا پرانتز سمت راست :
    اینجا بازم اول ((6 div 4) محاسبه میشه بعد با 3 مقایشه میشه :
    خوب کلا جواب پرانتز سمت راست هم میشه True

    خوب حالا پرانتز سمت چپ با سمت راست And میشه :
    True and True حوب میشه True

    حالا میرسیم به Not :
    Not True
    خوب که جواب این هم میشه False
    .
    خوب امیدوارم جوابم درست باشه .

  3. #3

    نقل قول: چند سوال درباره عملگر های منطقی و بیتی

    درست همین 4 مین خط رو منظورم بود یعنی مثلا not کل کار رو انتی میکنه یعنی اگه ارزش ما برابر true هست رو false میکنه و false رو true درسته؟
    و به همین منوال بقیه عملگر ها رو ؛من تو این قضیه مشکل دارم

  4. #4

    نقل قول: چند سوال درباره عملگر های منطقی و بیتی

    روش ایجاد انها در یک فایل پاسکال چیست؟
    منظورم این است که چطور این مثالی که در پست اول رو زدم رو در پاسکال بزارم و اجرا کنم میشه درباره این موضوع هم توضیح دهید؟

  5. #5

    نقل قول: چند سوال درباره عملگر های منطقی و بیتی

    نقل قول نوشته شده توسط hercool مشاهده تاپیک
    درست همین 4 مین خط رو منظورم بود یعنی مثلا not کل کار رو انتی میکنه یعنی اگه ارزش ما برابر true هست رو false میکنه و false رو true درسته؟
    و به همین منوال بقیه عملگر ها رو ؛من تو این قضیه مشکل دارم
    برداشت من از این جمله ات اینه که دقیقا نمیدونی با اینا چه طور کار کنی :
    حالا پاسخ من به این برداشت .
    یک نکته که هست اینه که Not یک عملگر یک تایی است یعنی برای اینکه از اون خروجی بگیری باید یک عبارت بهش بدی . مثل همون عملگر قرینه (-) که کافیه یک عدد جلوش بنویسی و عدد جلوشو قرینه کنه Not هم به همین منوال یک مقدار یا یک عبارت رو جلوش مینویس تا بر عکس کنه .
    در واقع جدول درسی او ن به این شکله :
    True ---> false
    False ---> True
    اما در مورد باقی عملگر ها And , Or اینا دوتایی هستند مثل عملگر جمع که باید با دوتا مقدار کار کنه . And رو توی سخت افزار میگن ضرب منطقی و تو برنامه نویسی میگن "و"
    خوب در And باید دو عمولوندی که با اون کار میکنن ارزش True داشته باشن .
    که جدول درستی and به شکله زیره :
    True , True ---> True
    True , False ---> False
    False , True ---> False
    False , False ---> False
    اما برای Or که تو سخت افزار بهش میگن جمع منطقی و در برنامه نویس هم میگن "یا"
    یعنی در کل لازمه یکی از عملوندهایی که باهاشون در ارتباطه ارزش True داشته باشه.
    جدول درستیش هم که به شکل زیره :
    True , True ---> True
    True , False ---> True
    False , True ---> True
    False , False ---> False

    نقل قول نوشته شده توسط hercool مشاهده تاپیک
    روش ایجاد انها در یک فایل پاسکال چیست؟
    منظورم این است که چطور این مثالی که در پست اول رو زدم رو در پاسکال بزارم و اجرا کنم میشه درباره این موضوع هم توضیح دهید؟
    یعنی نمیتونی این رو تو پاسکال اجرا کنی ؟

    uses crt ;
    begin
    if (عبارت منطقی ) = True Theb
    writeln('True'(
    else
    Writeln('False') ;
    end .
    readln() ;


    باید این کد کار کنه . البته من خیلی وقته مستقیم تو پاسکال کد ننوشتم .

  6. #6

    نقل قول: چند سوال درباره عملگر های منطقی و بیتی

    سلام
    واقعا کارت عالی و ممنون بابت توضیحات مفصلتون و من همونی رو می خواستم که شما توضیح دادید
    اما یه سوال دارم که نخواستم براش تاپیک باز کنم اونم اینه که
    این عبارت uses crt ; که اگر درست گفته باشم برای کتابخانه هست باید در هر برنامه ای باشه تا بتونه برنامه درست run بشه؟

  7. #7

    نقل قول: چند سوال درباره عملگر های منطقی و بیتی

    در مورد xor و not اگر میشه یک توضیح بدید مثل بالا

  8. #8

    نقل قول: چند سوال درباره عملگر های منطقی و بیتی

    نقل قول نوشته شده توسط hercool مشاهده تاپیک
    سلام
    واقعا کارت عالی و ممنون بابت توضیحات مفصلتون و من همونی رو می خواستم که شما توضیح دادید
    اما یه سوال دارم که نخواستم براش تاپیک باز کنم اونم اینه که
    این عبارت uses crt ; که اگر درست گفته باشم برای کتابخانه هست باید در هر برنامه ای باشه تا بتونه برنامه درست run بشه؟
    خواهش میکنم دوست عزیز .
    Uses که کلا یک کلمه ی کلیدی است تو پاسکال و Ctr همون طور که فایل کتابخانه ای هستش . اما نوشتن یا ننوشتن یک فایل کتابخانه ای در جلوی uses به این معنی نیست که نشه برنامه را اجرا کرد . در واقع بسته به دستوراتی که در برنامه تون استفاده کرده باشین باید از فایلهای کتابخانه ای استفاده کنید . تو این تکه برنامه ی بالا اگه اشتباه نکنم Readln مربوط به کتابخانه Crt باشه .
    مثلا تو این برنامه ما از دوستورات گرافیکی استفاده نکردیم پس نیازی هم نبود که کتابخانه Grapgh رو فراخوانی کنیم . اما مثلا اگه از دستوری مثل Cricle که مربوط به کتابخه ی Grapgh است ، استفاده کنیم خوب قاعدتا باید از کتابخانه ی مذکور نیز استفاده کنیم .
    اما خوب به دلیل اینکه دستورات اولیه پاسکال درون کتابخانه Ctr هستند عملا نمیشه بدون این کتابخانه برنامه ای نوشت .

    نقل قول نوشته شده توسط hercool مشاهده تاپیک
    در مورد xor و not اگر میشه یک توضیح بدید مثل بالا
    not رو که یک بار در بالا گفتم . همون نقیض هستش . و ارزش خروجی رو تغییر میده . با یک عملوند هم بیشتر کار نمیکنه . عملوند (یا همون عبارت منطقی) در جلوی Not نوشته میشه .

    اما Xor یا همون " یا انحصاری " که یک عملگر منطقی دو عملونده هستش . همانند And , Or . این عملگر در حالتی خروجی True داره که دو عبارت منطقی که باهاش کار میکنن ارزش نابرابر داشته باشند . به عبارتی یکی از عبارات False و دیگری True بشه .
    البته عملا از این عملگر استفاده نمیشه مگر در موارد خواص همچون تهیه پشتیبان از یک سری فایلها . (البته منظور من در شاخه نرم افزاره و بحث در مورد سخت افزار فرق میکنه).
    جدول درستی Xor به شکل زیره :
    True , True ---> False
    True , False ---> True
    False , True ---> True
    False , False ---> False

  9. #9

    نقل قول: چند سوال درباره عملگر های منطقی و بیتی

    ممنون بابت کمکتون
    اما چند تا نمونه سوال هست میخواستم اگر میشه حلش کنید البته چهار جوابی هست

    const x=13;const y=3;
    begin
    writeln((x and y)+(x or y)+(not x xor y)+(x shr y)+(x shl y));
    end.

    گزینه ها
    1-5
    2-106
    3-169
    4-127
    می دونم جواب 106 ولی می خوام بدونم چجوری این جواب بدست میاد مخصوصا در قسمت shl چون جوابش میاد 104 ولی نمی دونم چطوری همینطور هم جواب xor
    می خوام بدونم در چنین مسائلی این نوع عملگر ها چجور کار می کنن and or xor not
    آخرین ویرایش به وسیله hercool : جمعه 13 دی 1387 در 14:58 عصر

  10. #10

    نقل قول: چند سوال درباره عملگر های منطقی و بیتی

    write(2147483647 div 32767);
    writeln(maxlongint div maxint div 255 div 127);


    گزینه ها
    1-655353
    2-655382
    3-65535255
    4-error

    اگر false را با f و true را با t مشخص کنیم خروجی دستور زیر کدام گزینه است

    writeln(succ(true),succ(false),pred(true),pred(fal se));

    گزینه ها
    1-ftft
    2-ttff
    3-ttft
    4-error
    جواب این سوال 2 گزینه 1 است
    آخرین ویرایش به وسیله hercool : جمعه 13 دی 1387 در 14:59 عصر

  11. #11

    نقل قول: چند سوال درباره عملگر های منطقی و بیتی

    سلام می خوام ببینم این سوال اشتباه نیست به نظرم در قسمت دوم یعنی برای مشخص کردن مقدار

    a اشتباه کردن
    var a,b:byte;
    begin
    a:=15;b:=3;
    b:=b*(a div b);
    a:=a*(a div b);
    writeln(a,b);
    end.


    جواب ها
    153
    315
    515
    1515

  12. #12

    نقل قول: چند سوال درباره عملگر های منطقی و بیتی

    سلام . براي عمل ضرب و باقي مانده (* و % ) رو بخوام با عملگر هاي بيتي بدست بيارم بايد چطوري انجام بدم؟؟؟؟

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •