କଣ ହେଉଛି କଣ? · bei.pm

ଏହି ଟେକ୍ସଟ୍ ଆଟୋମେଟେଡ୍ ଭାବେ OpenAI GPT-4o Mini ଦ୍ୱାରା ଅନୁବାଦ ହେଲା।

ଏହି କୋଣରେ ଫାଇଲ୍ ଫର୍ମାଟ୍ ଏବଂ ରିଭର୍ସ ଇଞ୍ଜିନିୟରିଂ ବିଷୟରେ ଲେଖା ମିଳିବ।

କିନ୍ତୁ ବିଷୟଟି ଏହାର ସହିତ ସମ୍ବନ୍ଧିତ:
ବାହାରେ ଅନେକ ପ୍ରୋଗ୍ରାମିଂ ଭାଷା ଓ ବହୁତ ଲୋକ ଅଛନ୍ତି, ଯେଉଁମାନେ କିଛି ଜିନିଷକୁ ବିଶେଷ ନାମରେ ଜାଣନ୍ତି - କିମ୍ବା ମୌଳିକ ଜିନିଷର ଅସ୍ତିତ୍ୱ ବିଷୟରେ କୌଣସି ଧାରଣା ନଥାଏ, କାରଣ ସେମାନଙ୍କର ପ୍ରୋଗ୍ରାମିଂ ଭାଷା ସେଥିରୁ ସେମାନଙ୍କୁ ଅଲଗା କରିଦିଏ।

tl;dr:
ମୋର ନୋଟେସନ୍ ପ୍ରାୟ C99 <stdint.h> ସହିତ ଅନୁସୂଚିତ। ଯେଉଁମାନେ ଏହି ନୋଟେସନ୍ ସହିତ କିଛି କରିପାରିବେ, ସେମାନେ ମୋର ନୋଟେସନ୍ ସହିତ ସୁବିଧାରେ ରହିବେ।

ପୂର୍ଣ୍ଣ ସଂଖ୍ୟା

Integer ହେଉଛି ସହଜ ଭାବରେ କୁହାଯାଇଥିବା ସଂଖ୍ୟା, ଅର୍ଥାତ୍ ଯେ ସଂଖ୍ୟାଗୁଡିକୁ ଅନୁପାତ ନଥାଏ।

ଇହାରେ Integer ସଂଖ୍ୟା ଆମନ୍ତ୍ରଣରେ ସାଧାରଣତଃ ଏକ ନିଶ୍ଚିତ ସଂଖ୍ୟା ସ୍ପେକ୍ଟ୍ରମରେ, ମାନେ ଏକ ରେଜଲୁସନ୍, ନିର୍ଦ୍ଧାରିତ ହୁଏ। ଏହି ସୂଚନାକୁ ମୁ ଜଣାଇଛି ବିଟରେ - କାରଣ ଏକ "Byte" ଏବଂ ସେଥିରେ ଆଧାରିତ ପ୍ରକାରଗୁଡିକ (Word, Qword, ...) ସାଧାରଣତଃ ତଳ ସହିତ ସମ୍ପର୍କିତ।

ତଦୁପରି, Integer ପ୍ରକାରରେ ପ୍ରାକୃତିକ ସଂଖ୍ୟା (ℕ, ଅର୍ଥାତ୍, ଚିହ୍ନ ବିହୀନ - Unsigned) ଏବଂ ସମ୍ପୂର୍ଣ୍ଣ ସଂଖ୍ୟା (ℤ, ଅର୍ଥାତ୍, ଚିହ୍ନ ସହିତ - Signed) ମଧ୍ୟରେ ତାଲିକା କରାଯାଇଛି।
ଏହି ସୂଚନା ଏକ ବିଜ୍ଞାପନ ଭିତରେ (u କିମ୍ବା s) ପ୍ରଦର୍ଶିତ ହୁଏ।

ଇହାରେ, ଚିହ୍ନ ଥିବା ସମ୍ପୂର୍ଣ୍ଣ ସଂଖ୍ୟା ଏକ ଏକାଙ୍କ ସମ୍ପୂର୍ଣ୍ଣ ଭାବରେ ପ୍ରଦର୍ଶିତ ହେବା କିମ୍ବା ଦୁଇଟି ସମ୍ପୂର୍ଣ୍ଣ ଭାବରେ ପ୍ରଦର୍ଶିତ ହେବା ସମ୍ଭବ।
ଯଦି ଅନ୍ୟଥା ଉଲ୍ଲେଖ ନକରାଯାଇଥିଲେ, ଦୁଇଟି ସମ୍ପୂର୍ଣ୍ଣ ବ୍ୟବହାର କରାଯିବ, କାରଣ ଏହା ଆଧୁନିକ ତଥ୍ୟ ବିଜ୍ଞାନରେ ପ୍ରାଥମିକ ପ୍ରଦର୍ଶନା ହିସାବରେ ଗଣନା କରାଯାଇଛି।

ମୁଁ ମୋର ଡୋକ୍ୟୁମେଣ୍ଟେ ପ୍ରତିକ୍ଷେପ ଅଂଶଗୁଡିକୁ uint ଭାବରେ ଦେଖାଏ, ପରେ ବିଟରେ ସଠିକତା ଦେଖାଯାଇଛି।
ଚିହ୍ନ ଥିବା ସଂଖ୍ୟାଗୁଡିକୁ ମୁଁ ମୋର ଡୋକ୍ୟୁମେଣ୍ଟେ sint ଭାବରେ ଦେଖାଏ, ସେଥିରେ ବିଟରେ ସଠିକତା ଦେଖାଯାଇଛି।

ମୁଁ "char" ଡାଟା ପ୍ରକାରର ବ୍ୟବହାରକୁ ତ୍ୟାଗ କରେ ଯାହା ଚିହ୍ନ ଅନ୍ତର୍ଗତ, କାରଣ ଚିହ୍ନ ଶ୍ରେଣୀଗୁଡିକ ସାଧାରଣତଃ କେବଳ Integer ମୂଲ୍ୟର ଶ୍ରେଣୀ ବ୍ୟାଖ୍ୟା କରେ।
ସେହିପରି, ଏହାକୁ uint(8)[] ଭାବରେ ପ୍ରଦର୍ଶିତ କରାଯାଇଛି।

ଉଦାହରଣ:

ନୋଟେସନ C99 stdint.h-ସମାନ ବିବରଣୀ ସଂଖ୍ୟା ମାଣ
uint(16) uint16_t ଅସାଇନ୍ଡ ଇଣ୍ଟେଜର, 16 ବିଟ୍ ଲମ୍ବା 0 - 65.535
sint(8) int8_t ସାଇନ୍ଡ ଇଣ୍ଟେଜର, 8 ବିଟ୍ ଲମ୍ବା, ଦୁଇ ପ୍ରତିକଳ୍ପ -126 - 127
uint(24) uint32_t:24 ଅସାଇନ୍ଡ ଇଣ୍ଟେଜର, 24 ବିଟ୍ ଲମ୍ବା 0 - 16.777.216

ଫେଷ୍ଟକମା-ମୂଲ୍ୟ

ଫେସ୍ଟକମ୍ମା-ମୂଲ୍ୟ ହେଉଛି ସଂଖ୍ୟା ମୂଲ୍ୟଗୁଡ଼ିକ ଯାହା ଯଥାର୍ଥ ସଂଖ୍ୟା (Q) ସ୍ପେକ୍ଟ୍ରମରୁ ହେବାକୁ ବହୁତ ସହଜ, ଯାହାରେ କମ୍ମାନାକମ୍ମା ସ୍ଥାନ ଅଛି।

ଫେସ୍ଟକମ୍ମା-ମୂଲ୍ୟଗୁଡ଼ିକରେ - ଏହିଥିରେ ନାମ ମାନ୍ୟତା ଅନୁସାରେ - କମ୍ମାର ସ୍ଥିତି ତଥ୍ୟ ପ୍ରକାର ଦ୍ୱାରା ନିର୍ଦ୍ଧାରିତ ହୋଇଥାଏ।
ଏହିପରି, ଏହି ତଥ୍ୟ ପ୍ରକାରର ସଂଖ୍ୟା ପ୍ରାଣାଳୀ ପାଇଁ ଏକ ନିର୍ଦ୍ଧିଷ୍ଟ ସଂଖ୍ୟା ଅବଧି ଦିଆଯାଇଛି; ଗଣିତ ଭାବରେ ଏହାର ଅର୍ଥ ସୀମିତ

ବାସ୍ତବ ଜୀବନରେ, ଏହି ତଥ୍ୟ ପ୍ରକାର ପ୍ରାୟତଃ ତୁଳନାମୂଳକ ତୁଳନା ହାର୍ଡୱେର ଏକକ ନଥିବା ପ୍ଲାଟଫର୍ମଗୁଡ଼ିକରେ ବ୍ୟବହାର କରାଯାଇଥାଏ, କାରଣ ଫେସ୍ଟକମ୍ମା-ମୂଲ୍ୟଗୁଡ଼ିକର ଗଣନା ଇଣ୍ଟେଜର ଏକକ ଦ୍ୱାରା କରାଯାଇପାରିବ।

ଏହି ତଥ୍ୟ ପ୍ରକାର, ଯଥା ନିର୍ଦ୍ଧାରିତ ଆବଶ୍ୟକତା ପୂରଣ କରିବାକୁ ଡାଟାବେସ୍-ମ୍ୟାନେଜମେଣ୍ଟ ସିଷ୍ଟମ୍‌ଗୁଡ଼ିକ ଦ୍ୱାରା ବ୍ୟବହାର କରାଯାଇଥାଏ।
ଏହାର ଦୃଷ୍ଟାନ୍ତ ହେଉଛି ଆର୍ଥିକ ତଥ୍ୟର ଚିରସ୍ଥାୟୀ ସଂରକ୍ଷଣ ପାଇଁ ବ୍ୟବସ୍ଥା; ଅଧିକାଂଶ ମୁଦ୍ରା ଦୁଇ ନାକମ୍ମା ସ୍ଥାନରେ ସୀମିତ ହୁଏ। (କିନ୍ତୁ ଏହା ପାଇଁ ଫେସ୍ଟକମ୍ମା-ମୂଲ୍ୟ ଗ୍ରହଣ କରିବା ହେଉଛି ଜ୍ଞାନସାର କାରଣ; ଏହା ଅଧିକ ଚାତୁରୀରେ, ସୂକ୍ଷ୍ମ ମୁଦ୍ରା ଏକକ ଭାବରେ ଇଣ୍ଟେଜର ଭାବରେ ସଂରକ୍ଷଣ କରାଯିବା ଓ ତାହାର ଅବରୋଧ ପ୍ରତିଷ୍ଠା କରାଯିବା ଉଚିତ)

ଇଣ୍ଟେଜର-ସୂଚନାଗୁଡ଼ିକର ସମାନ ଭାବରେ ମୁଁ ଫେସ୍ଟକମ୍ମା-ମୂଲ୍ୟଗୁଡ଼ିକର କମ୍ମା ପୂର୍ବରୁ ଓ ପରେ ସଂଖ୍ୟାର ଆକାରକୁ ଦେଖାଏ:
ufixed(9,7) ଏକ ତଥ୍ୟ ପ୍ରକାରକୁ ଦର୍ଶାଏ, ଯାହା କମ୍ମା ପୂର୍ବରୁ 9 ବିଟ୍ ଏବଂ କମ୍ମା ପରେ 7 ବିଟ୍ ସଂରକ୍ଷିତ କରେ; ମୋଟେ 16 ବିଟ୍ ଚଡ଼ାଇଁସାହା ଏହା ଦୁଇଟି ସ୍ୱାଧୀନ ଇଣ୍ଟେଜର ଭାବରେ ଅବଧି (0,0) ଠାରୁ (511,127) ଧରିପାରେ।
କିନ୍ତୁ ଏହି ବ୍ୟାଖ୍ୟା ତାହାର ଦେସିମାଲ୍ ଦର୍ଶନରେ 28 ସଂଖ୍ୟାଗୁଡ଼ିକୁ ବ୍ୟବହାର ନ କରିବାକୁ ବାଧ୍ୟ କରେ, କାରଣ ମାନବ ଦୃଷ୍ଟିରେ ସର୍ବାଧିକ (511,99) ପର୍ଯ୍ୟନ୍ତ ସୀମିତ ହେବାକୁ ସମ୍ଭାବନା ଅଛି।

ଫେସ୍ଟକମ୍ମା-ମୂଲ୍ୟକୁ 2ଟି ଅଲଗା ଇଣ୍ଟେଜରର ଭାବରେ ସିଧା ବ୍ୟାଖ୍ୟା କରିବା ପରି ଏହା ନୁହେଁ - ଯାହା ଦେସିମାଲ୍ ସଂଖ୍ୟାରେ ପରିବର୍ତ୍ତନ କରିବା ସମୟରେ ସଦା ଏକ ଅବ୍ୟବହୃତ ତଥ୍ୟ କ୍ଷେତ୍ର ଓ ହସ୍ତାନ୍ତର ନିର୍ଦ୍ଧାରଣ କରିବାକୁ ଅର୍ଥ କରେ - ବରଂ କମ୍ମା ପରେ ଅଂଶକୁ ତାହାର ସମ୍ପୂର୍ଣ୍ଣ ରିଜୋଲ୍ୟୁସନ୍ ଭାବରେ ଖଣ୍ଡ ଭାବରେ ବ୍ୟାଖ୍ୟା କରାଯାଇପାରେ।
ଏହି ufixed(9,7) ନାମକ ଦୃଷ୍ଟାନ୍ତରେ ଏହିପରି ଏକ ଖଣ୍ଡ 27 ଉପରେ ଏକ ନେନର ପାଇଁ ପ୍ରତିଷ୍ଠା କରିବ; ସଂଖ୍ୟା ପ୍ରାଣାଳୀ 0,00 ଠାରୁ 511 + 126127 ପର୍ଯ୍ୟନ୍ତ ଯିବ।
ଦେସିମାଲ୍ ଦର୍ଶନରେ ପରିବର୍ତ୍ତନ କରିବାକୁ କମ୍ମା ବିଟ୍ 128 ଦ୍ୱାରା ବିଭାଜିତ କରାଯିବ।
ଏହି ପ୍ରକାର ସହଜ ଗଣନା କାର୍ଯ୍ୟଗୁଡ଼ିକୁ ସଂପାଦନ କରିବାକୁ ସକ୍ଷମ, କାରଣ ହସ୍ତାନ୍ତର ସ୍ୱୟଂ ହେଉଛି, ଯାହା ଏହି ପ୍ରକାରକୁ ସାଧାରଣତଃ ପ୍ରାଥମିକତା ଦିଏ।
କିନ୍ତୁ ଏହି ପ୍ରକାରର କମ୍ମା ସ୍ଥାନଗୁଡ଼ିକରେ ଦେସିମାଲ୍ ଦର୍ଶନରେ ଏକ ନିଶ୍ଚିତ ସମାଧାନ ନଥାଏ, ଏକ ଗୋଟିଏ ଦେସିମାଲ୍ ସ୍ଥାନ ତେବେ 0.01 ନୁହେଁ, ବରଂ 0.007874 ହେବ, ଯାହା ମାନ୍ୟତା ବିଷୟରେ ଅନୁପାତ ତ୍ରୁଟିକୁ ଉତ୍ପନ୍ନ କରିବ।

କୌଣସି ବ୍ୟାଖ୍ୟା ପ୍ରକାର ବ୍ୟବହୃତ ହୁଏ, ସେଥିରେ ବ୍ୟବହାର ସ୍ଥାନରେ ଡୋକ୍ୟୁମେଣ୍ଟ କରାଯିବ।

ଫ୍ଲୋଟିଂ-କମା ଅଥବା ଗ୍ଲେଟିଂ-କମା ମୂଲ୍ୟ

ଫ୍ଲୋଟିଂ-ପଏଣ୍ଟ ମୂଲ୍ୟଗୁଡିକ ହେଉଛି ଗଣିତରେ ଅଧିକ କଠିନ ବ୍ୟାଖ୍ୟା, ଯେଉଁଥିରେ ଏକ ଶୁନ୍ୟ ଉଚ୍ଚତା ଗଣନା ଏକ ଗଣିତ ସୂତ୍ର ଦ୍ୱାରା ଏଭଳି ଦିଆଯାଇଛି, ଯେଉଁଥିରେ କାର୍ଯ୍ୟ ଏବଂ ଗୋଟିଏ ଦ୍ୱାରା ଦ୍ୱୀକ୍ରମ ଭାଗ ଗଠିତ ହୁଏ - ଏବଂ ଏହା ବৈଜ୍ଞାନିକ ଧାରଣାକୁ ମାନ୍ୟ କରେ।
ଏହି ସମସ୍ତଙ୍କୁ ପ୍ରୟୋଗ କରିବାର ସାଧାରଣ ଉପାୟଟି IEEE 754 ଦ୍ୱାରା ସ୍ଥାପିତ ହୋଇଛି ଏବଂ ତାହା ପରେ ଆନ୍ତର୍ଜାତୀୟ ଭାବେ ସ୍ୱୀକୃତ।

ଏଥିରେ ଏକ ଫ୍ଲୋଟିଂ-ପଏଣ୍ଟ ମୂଲ୍ୟ ସାଧାରଣତଃ ନିମ୍ନଲିଖିତ ଅଂଶଗୁଡିକୁ ସାମିଲ କରେ:

ଚିହ୍ନ (0 ବା 1) ଏକ୍ସପୋନେନ୍ଟ ମାଣ୍ଟିସ୍

ଚିହ୍ନଟି କ୍ଷେତ୍ରରେ ବିନାରୀ ହାଁ/ନା ବ୍ୟାଖ୍ୟା ଦ୍ୱାରା ସରଳରୂପେ ନିଷ୍କର୍ଷ କରାଯାଇପାରେ, ଅସଲି ସଂଖ୍ୟାଟି ଏକ ସମୀକରଣ ମାଧ୍ୟମରେ ତିଆରି ହୁଏ
ମାଣ୍ଟିସ୍ * 2ଏକ୍ସପୋନେନ୍ଟ

ଏହା ସହିତ କିଛି ସ୍ଥାୟୀ ମୂଲ୍ୟ ମଧ୍ୟ ଅଛି, ଯାହା ବିଶେଷ କେସଗୁଡିକୁ ରେସନାଲ୍ ସଂଖ୍ୟାକୁ ଆବରଣ କରେ - ତାହାର ମଧ୍ୟରେ ±∞ ଏବଂ NaN ("କୌଣସି ମାନ୍ୟ ସଂଖ୍ୟା ନୁହେଁ") ଅଛି।

ଫ୍ଲୋଟିଂ-ପଏଣ୍ଟ ମୂଲ୍ୟଗୁଡିକ ବିଶେଷ କରି ସେହି ସମୟରେ ଲାଭଦାୟକ ହୁଏ, ଯେଉଁଥିରେ ସଠିକତା ତେତେ ଗୁରୁତ୍ୱପୂର୍ଣ୍ଣ ନୁହେଁ, କାରଣ ଏହି ପ୍ରକାରର ମୂଲ୍ୟଗୁଡିକରେ ବାରମ୍ବାର ଗୋଲା ବିକୃତି ଓ ସଠିକତାର କ୍ଷୟ ଘଟେ। ସାଧାରଣତଃ ଫ୍ଲୋଟିଂ-ପଏଣ୍ଟ ମୂଲ୍ୟଗୁଡିକ ଏହିପରି ନିର୍ଦ୍ଦିଷ୍ଟ କୋଆର୍ଡିନେଟ୍ସ, 3D ମୋଡେଲ୍ସରେ ଭର୍ଟେକ୍ସ-ଭେକ୍ଟରସ୍ କିମ୍ବା ଅପ୍ଟିକାଲ୍ ପ୍ରତିନିଧିତ୍ୱ ଉଦ୍ଦେଶ୍ୟ ପାଇଁ ବ୍ୟବହୃତ ହୁଏ।

ଡାଟା ଫର୍ମାଟଗୁଡିକରେ ଫ୍ଲୋଟିଂ-ପଏଣ୍ଟ ମୂଲ୍ୟଗୁଡିକୁ float(ମାଣ୍ଟିସ୍, ଏକ୍ସପୋନେନ୍ଟ) ଭାବରେ ବିବେଚନା କରାଯାଇଛି।
ଯଦି IEEE 754 ରୁ ବିଭିନ୍ନ କୌଣସି ଫର୍ମାଟ୍ ବ୍ୟବହୃତ ହୁଏ, ତେବେ ଏହା ସେହି ଅନୁସାରେ ଦିଆଯିବ।