PDA

View Full Version : سوال: کاربرد و نحوه عملکرد عملگر'|='



feryal
پنج شنبه 16 آبان 1392, 11:59 صبح
سلام و خسته نباشید
میخواستم بدونم کسی میدونه این علامت=| یعنی چی؟

SuTeDell
پنج شنبه 16 آبان 1392, 13:33 عصر
سلام و خسته نباشید
میخواستم بدونم کسی میدونه این علامت=| یعنی چی؟

سلام
احیانا =! نیست؟:متفکر:

mortezasar
پنج شنبه 16 آبان 1392, 13:41 عصر
=| این علامت به چشمم نخورده اما اگه =! باشه میشه مخالف

مهرداد صفا
پنج شنبه 16 آبان 1392, 14:11 عصر
سلام.


x|=y
معادل
x=x|y است.
برای درک نحوه عملکرد این عملگر باید با نحوه عملکرد '|' آشنا باشید.
عملگر '|' مانند "یا" عمل می کند و در مورد عبارات منطقی در صورتی که یکی از دو عبارت و یا هردوی آنها true باشند مقدار true را بر می گرداند. این عملگر در موارد باینری در صورتی که یکی و یا هردوی بیتها برابر 1 باشند مقدار 1 را بر می گرداند.
امیدوارم مثال زیر در درک این موضوع مفید باشد:


//بسم الله الرحمن الرحیم
//اللهم صل علی محمد و آل محمد

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int a = 0x0f0f;
int b = 0xf0f0;
Console.Write("0x{0:x4} | 0x{1:x4} = ", a, b);
a |= b;
Console.WriteLine("0x{0:x4}", a);
bool x = true;
bool y = false;
Console.Write("{0} | {1} = ", y, x);
y |= x;
Console.WriteLine(y);



}
}
}

خروجی:

0x0f0f | 0xf0f0 = 0xffff
False | True = True

FastCode
پنج شنبه 16 آبان 1392, 16:24 عصر
البته باید توجه داشته باشید که در برخورد با مقادیر منطقی از محیط Native همیشه بهتره که از ||= و &&= استفاده کنید.چون ممکنه که مقادیر شما معادل صفر و یک نباشند و از بیتهای دیگر استفاده شده باشد.

feryal
جمعه 17 آبان 1392, 12:27 عصر
سلام.


x|=y
معادل
x=x|y است.
برای درک نحوه عملکرد این عملگر باید با نحوه عملکرد '|' آشنا باشید.
عملگر '|' مانند "یا" عمل می کند و در مورد عبارات منطقی در صورتی که یکی از دو عبارت و یا هردوی آنها true باشند مقدار true را بر می گرداند. این عملگر در موارد باینری در صورتی که یکی و یا هردوی بیتها برابر 1 باشند مقدار 1 را بر می گرداند.
امیدوارم مثال زیر در درک این موضوع مفید باشد:


//بسم الله الرحمن الرحیم
//اللهم صل علی محمد و آل محمد

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int a = 0x0f0f;
int b = 0xf0f0;
Console.Write("0x{0:x4} | 0x{1:x4} = ", a, b);
a |= b;
Console.WriteLine("0x{0:x4}", a);
bool x = true;
bool y = false;
Console.Write("{0} | {1} = ", y, x);
y |= x;
Console.WriteLine(y);



}
}
}

خروجی:

0x0f0f | 0xf0f0 = 0xffff
False | True = True
سلام مرسی.
میشه لطفا یکم بیشتر راجبه برنامتون توضیح بدید

FastCode
جمعه 17 آبان 1392, 15:02 عصر
بهش میگن Or Assign
یعنی هر کدوم از بیتهای سمت راست که در سمت چپ ۱ نیست ۱ بشه.

habibb
جمعه 17 آبان 1392, 15:53 عصر
OR assignment (http://msdn.microsoft.com/en-us/library/vstudio/h5f1zzaw.aspx)

مهرداد صفا
شنبه 18 آبان 1392, 00:16 صبح
سلام مرسی.
میشه لطفا یکم بیشتر راجبه برنامتون توضیح بدید

در قسمت اول a و b مقداری معادل مقدار باینری:


a=0000111100001111
b=1111000011110000
داشتند که با استفاده از |= مقدار a برابر
1111111111111111 شد. در واقع تمام بیتهایی که در b مقدار 1 داشتند، در a هم باید 1 باشند. برای مثال حاصل 1|2 برابر با 3 است:


0001b|0010b=0011b//binary
در حالیکه 2|6 برابر 6 است:


0010b|0110b=0110b
حاصل باید شامل تمام بیتهای برابر 1 هر دو طرف باشد.

و این یعنی چی؟p.ClassStyle |= CS_DROPSHADOW

این مورد به پارامترها و flag هایی که در ویندوز برای ساخت پنجره ها استفاده می شود بر می گردد که بهتر بود در همان تاپیکی که در این باره ایجاد کرده بودید بحث شود. فقط علی الحساب فرض کنید style یک پنجره در حالت تمام صفحه برابر 8 یا 1000b باشد، این یعنی که چهارمین بیت مشخص می کند که پنجره بایدmaximize باشد حالا فرض کنید مثلا سومین بیت برای برداشتن نوار عنوان استفاده می شود؛ حالا اگر قصد داشته باشیم یک پنجره تمام صفحه و بدون نوار عنوان ایجاد کنیم:


//for example
int WS_MAXIMIZED=8;//1000b
int WS_NoTitleBar=4;//0100b
Window.Style=WS_MAXIMIZED;//making window maximize by adding 8 to it.
window.Style|=WS_NoTitle;// making window with-out titlebar by adding 4 to its style.....

با این کار بیتهای سوم و چهارم برابر 1 شدند و ویندوز با پردازش این مقدار پنجره ای تمام صفحه بدون نوار عنوان (پارامتر ها فرضی هستند و برای مثال آورده شدند) ایجاد می کند.

FastCode
یک شنبه 19 آبان 1392, 07:38 صبح
اول هگز نه هگزادسیمال
دوما کوچیک بنویس.نمیدونی توی مانیتور ۲۳ اینچ و ۳۰ اینچ چقدر بزرگ میشه.
برای اینکه باینری خیلی طولانی و غیر قابل خوندن میشه:
b00000000000000100000000000000000

FastCode
یک شنبه 19 آبان 1392, 08:31 صبح
☻☺☻☺☻☺☻☺☻☺:لبخند:
اگر دقت کنید نوشته کتابخونه VB6
اسم تابع hex ه که مخفف hexadecimal ه.
hex یعنی ۶
hexadecimal یعنی ۱۶
در گفتار و نوشتار انگلیسی از کلمه hexadecimal استفاده میشه که با ۶ اشتباه نشه

habibb
یک شنبه 19 آبان 1392, 21:26 عصر
اگر دقت کنید نوشته کتابخونه VB6
اسم تابع hex ه که مخفف hexadecimal ه.
hex یعنی ۶
hexadecimal یعنی ۱۶
در گفتار و نوشتار انگلیسی از کلمه hexadecimal استفاده میشه که با ۶ اشتباه نشه


هگزا دسيمال، مبناى شانزده
اين اصطلاح از كلمه يونانىhex به معناى 6، و كلمه لاتين decemبه معناى 10 گرفته شده است، و سيستم عددى مبناى 16 است كه از رقمهاى صفر تا نه و از حروف بزرگ A (معادل اعشارى 10) تاF (معادل اعشارى 15) تشكيل مى گردد. هگزا دسيمال كه (به اختصار هگز گفته مى شود)

habibb
یک شنبه 19 آبان 1392, 21:31 عصر
اول هگز نه هگزادسیمال
برای اینکه باینری خیلی طولانی و غیر قابل خوندن میشه:
b00000000000000100000000000000000

در برنامه نويسى براى نشان دادن اعداد دو دويى مورد استفاده كامپيوتر در يك شكل فشرده تر به كار مى رود. اعداد هگزا دسيمال كاملا در بايت هاى 8 بيتى كه اساس حافظه و منبع ذخيره كامپيوتر مى باشد، جاى مى گيرد. از آنجايى كه در هر 4 بيت مى توان هر يك از اين 16 رقم را نشان داد، يك عدد دو رقمى هگزا دسيمال در يك بايت گنجانده مى شود.

FastCode
یک شنبه 19 آبان 1392, 21:38 عصر
eeeee
خوب شدی گفتی.اگر شما نبودی من چکار میکردم؟ توی چه جهلی داشتم زندگی میکردم.چند سال بود داشتم روی احتمالات برنامه نویسی میکردم.باید برم همه‌ی برنامه هام رو بازبینی کنم که اشتباه ننوشته باشم.

FastCode
یک شنبه 19 آبان 1392, 21:46 عصر
هگزا دسيمال، مبناى شانزده
اين اصطلاح از كلمه يونانىhex به معناى 6، و كلمه لاتين decemبه معناى 10 گرفته شده است، و سيستم عددى مبناى 16 است كه از رقمهاى صفر تا نه و از حروف بزرگ A (معادل اعشارى 10) تاF (معادل اعشارى 15) تشكيل مى گردد. هگزا دسيمال كه (به اختصار هگز گفته مى شود)
dec یک کلمه ی یونانیه.

habibb
دوشنبه 20 آبان 1392, 09:18 صبح
در کل استفاده از اعداد هگز به جای اعداد باینری بهتره
چون از لحاظ شکلی هم فشرده تره و طولش کمتر میشه
و از لحاظ حافظه بهینه تره چون 2 رقم از نوع عدد هگز فقط در یک بایت جا می گیره .

feryal
سه شنبه 28 آبان 1392, 20:24 عصر
مرسی از عزیزان .