رفتن به مطلب

تبدیل عدد اعشاری منفی به باینری


kebriya

ارسال های توصیه شده

سلام دوستان. خسته نباشید.

می خوام عدد اعشاری منفی مثل 0.25- رو باینری کنم. چند تا کد پیدا کردم ولی عدد منفی رو اشتباه جواب میده. خود متلب چیزی نداره؟

لینک به دیدگاه
سلام دوستان. خسته نباشید.

می خوام عدد اعشاری منفی مثل 0.25- رو باینری کنم. چند تا کد پیدا کردم ولی عدد منفی رو اشتباه جواب میده. خود متلب چیزی نداره؟

 

سلام

یعنی مثلا برای این عدد می خواین اینجوری بشه؟

 

2 -------------->  10
1 -------------->  01
.5 ------------->  00.1
0.25 ----------->  00.01

 

هر سطر تقسیم بر 2 میشه، که توی فرمت باینری عدد به سمت راست شیفت میشه.

 

-0.25 ----------> -00.01

لینک به دیدگاه
چی شد؟ متوجه منظورتون نشدم

 

ببین کبریا خانوم، من یه عددی رو در 2 ضرب کنم، توی مبنای باینری به سمت چپ شیفت میشه، تقسیم بر 2 هم بر عکس این حالت یعنی به سمت راست شفیت میشه.

 

3   -------------->  00011
6   -------------->  00110
12  -------------->  01100
24  -------------->  11000

 

dec2bin([3,6,12,24,48])

ans =

000011
000110
001100
011000
110000

 

حالا بخوایم از این ویژگی استفاده کنیم، برای 1.5 بدست میاد:

 

1.5   -------------->   1.1 = 2^0 + 2^-1
0.75  -------------->  0.11 = 2^-1 + 2^-2

لینک به دیدگاه
ممنونم الان متوجه شدم :w16::hapydancsmil:

 

خواهش می کنم، از همین روش برای تبدیل اعداد اعشاری به باینری می تونی استفاده کنی، اول توی 2 مثلا به توان 10 می تونی ضرب کنی، بعد قسمت صحیحش رو به باینری تبدیل کنی، در آخر هم ممیز رو با توجه به عددی که درش ضرب کردی، اضافه کنی.

لینک به دیدگاه
خود متلب تابعی نداره که این کارو انجام بده؟

 

نه نداره، یه چنین چیزی:

 

clear;
A = 11.0625;

n = 10;
x = A * 2^n;

B = dec2bin(x,n);

[b(1:end-n) '.' B(end-n+1:end)]

لینک به دیدگاه
  • 3 ماه بعد...
سلام آقا ایمان من نفهمیدم چطوری عدد منفی اعشاری باینری میشه!!!!!!!!!

میشه یه نمونه کد بزنین؟ممنونتون میشم

 

سلام سمانه خانوم

بالا توضیح دادم که، پست چهارم (#4) رو ببین. به منفی که کار نداریم، عدد اعشاری رو تبدیل به باینری می کنیم.

لینک به دیدگاه
سلام سمانه خانوم

بالا توضیح دادم که، پست چهارم (#4) رو ببین. به منفی که کار نداریم، عدد اعشاری رو تبدیل به باینری می کنیم.

یعنی کامپیوتر مثلا بین 2.5و منفی 2.5 تفاوتی نمیبینه؟!!!!!!!!!!!!!!!

تو مدار منطقی میامد اول تبدیل به عدد باینری میکرد بعد متمم میگرفت و حاصل متمم را با 1 جمع می کرد. مشکل اینجاست من نمی دونم کدوم دستور تو متلب جمع باینری انجام میده!!!!! با چه دستوری جمع باینری بنویسم که مثلا حاصل 10001+1 =10010 بشه

لینک به دیدگاه
یعنی کامپیوتر مثلا بین 2.5و منفی 2.5 تفاوتی نمیبینه؟!!!!!!!!!!!!!!!

تو مدار منطقی میامد اول تبدیل به عدد باینری میکرد بعد متمم میگرفت و حاصل متمم را با 1 جمع می کرد. مشکل اینجاست من نمی دونم کدوم دستور تو متلب جمع باینری انجام میده!!!!! با چه دستوری جمع باینری بنویسم که مثلا حاصل 10001+1 =10010 بشه

 

خب می تونیم بیت اول به علامت اختصاص بدیم، حتما که برای نمایش اعداد منفی نباید از مکمل 2 استفاده بشه.

لینک به دیدگاه

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...