+1 امتیاز
قبل در برنامه نویسی توسط (1.1هزار امتیاز)

با توجه به اینکه در جاوا انواع داده عددی مثل int یا long و ... همه از نوع signed هستند و نوع داده unsigned در جاوا وجود ندارد، چگونه می توان نوع داده unsigned معادل سازی کرد؟

1 پاسخ

+1 امتیاز
قبل توسط (2.6هزار امتیاز)

در حالت کلی داده های unsigned به دلیل این که بازه عددی را تنها 2 برابر می کنند زیاد کار مهمی انجام نمی دهند

همچنین قوانین cast کردن برای چنین داده هایی بسیار گیج کننده است 

به دلیل این که داده های float هم بازه عددی بسیار بزرگی (دو به توان 128) را می پذیرند و هم اندازه int در حافظه فضا اشغال می کنند می توان از این اعداد برای چنین کاری استفاده کرد و در هنگام نمایش آن ها قسمت اعشاری را نمایش نداد یا آن ها را cast کرد.

برای راحت شدن کار می توان از کلاسی مشابه مثال زیر استفاده کرد:

class unsigned_int{
        private float a;
        unsigned_int(int input){
            if(input<0)System.err.println("you cant save signed value in unsiged_int :"+input);
            else a=input;
        }
        unsigned_int(float input){
            if(input<0)System.err.println("you cant save signed value in unsiged_int :"+input);
            else a=input;
        }
        unsigned_int(long input){
            if(input<0)System.err.println("you cant save signed value in unsiged_int :"+input);
            else a=input;
        }
        static unsigned_int sum(unsigned_int a,unsigned_int b){
            return new unsigned_int(a.a+b.a);
        }
        static unsigned_int substract(unsigned_int a,unsigned_int b){
            return new unsigned_int(a.a-b.a);
        }
        static unsigned_int devide(unsigned_int a,unsigned_int b){
            return new unsigned_int(a.a/b.a);
        }
        static unsigned_int multiply(unsigned_int a,unsigned_int b){
            return new unsigned_int(a.a*b.a);
        }
        @Override
        public String toString(){
            return ""+(long)this.a;
        }
    }

 

سوالات مشابه

+2 امتیاز
2 پاسخ 1.3هزار بازدید
0 امتیاز
0 پاسخ 492 بازدید
0 امتیاز
2 پاسخ 5.3هزار بازدید
+2 امتیاز
2 پاسخ 6.0هزار بازدید
0 امتیاز
1 پاسخ 1.5هزار بازدید
...