"ఎఫెక్టివ్ కోడింగ్ కంటే మెరుగైనది ఏదీ లేదు, అమిగో! పాత రోబోట్‌ను నమ్మండి."

"మీరు గూఢచారులు ఉపయోగించే సాంకేతికలిపి గురించి మాట్లాడుతున్నారా?"

"కాదు. నేను సమాచారాన్ని జీర్ణమయ్యే రూపంలో అందించడం గురించి మాట్లాడుతున్నాను. సంఖ్యా వ్యవస్థల గురించి. రోజువారీ జీవితంలో చాలా మంది ప్రజలు దశాంశ వ్యవస్థను ఉపయోగిస్తారని మీకు తెలుసు. ఇది ప్రతి సంఖ్యను సూచించడానికి 10 చిహ్నాలను ఉపయోగిస్తుంది: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. 10 సంఖ్యలు ఉన్నాయి, కాబట్టి వ్యవస్థను దశాంశం అంటారు."

"ఇది వారి పది వేళ్లతో మానవులకు సౌకర్యవంతంగా ఉంటుంది. కానీ ప్రోగ్రామర్లు పెద్ద-సమయ ఆవిష్కర్తలు. వారు వెంటనే వేరే సంఖ్యల సంఖ్యలను ఉపయోగించే ఎన్‌కోడింగ్‌లతో ముందుకు వచ్చారు. ఉదాహరణకు, 2, 8, 16, లేదా 64 అంకెలు. వారు ఇలా చేసారు. 'సిగ్నల్ ఉంది / సిగ్నల్ లేదు'పై ఆధారపడే కంప్యూటర్‌లకు దీన్ని సౌకర్యవంతంగా చేయండి."

“అయ్యో, వాళ్ళిద్దరికీ ఉమ్మడిగా ఏమి ఉందో నేను చూస్తున్నాను... ఈ వ్యవస్థలన్నీ ఇద్దరి శక్తులపై ఆధారపడి ఉన్నాయి.

ఆక్టల్ ఎన్‌కోడింగ్

"మంచి పరిశీలన. 8 అంకెలతో కూడిన ఎన్‌కోడింగ్‌తో ప్రారంభిద్దాం. మానవులు దీన్ని సులభమయినదిగా భావించవచ్చు: కేవలం 8 మరియు 9 సంఖ్యలను వదలండి మరియు — బూమ్ — మీకు ఆక్టల్ ఎన్‌కోడింగ్ (సంఖ్యా వ్యవస్థ) ఉంది. మీకు అక్షరార్థాల గురించి ఇటీవల చెప్పబడింది , సరియైనది ?"

"అవును, నేను ఉన్నాను."

"సరే, ఆశ్చర్యం! మీరు ఆక్టల్ సిస్టమ్‌ని ఉపయోగించి ఎన్‌కోడ్ చేసిన సంఖ్యా అక్షరాలను సెట్ చేయవచ్చు. ఒకవేళ, మీకు నిజంగా అవసరమైతే. ఇది ధ్వనించే దాని కంటే సులభం. మొత్తం సంఖ్య ముందు 0ని ఉంచండి.

"కాబట్టి సంఖ్యా అక్షరం సున్నాతో ప్రారంభమైతే, అది అష్టమా అని అర్ధం అవుతుందా ?"

“అవును, జావా దానిని ఆక్టల్‌గా పరిగణిస్తుంది.

ఉదాహరణలు:

కోడ్ గమనికలు
int x = 015; 
x 13: 1*8+5
int x = 025; 
x 21: 2*8+5
int x = 0123; 
x 83: 1*64+2*8+3 == 1*8 2 +2*8 1 +3*8 0
int x = 078;
ఇది కంపైల్ చేయదు: 8 అనేది ఆక్టల్ ఎన్‌కోడింగ్‌లో ఉపయోగించే చిహ్నాలలో ఒకటి కాదు.

"మీరు మీ కోడ్‌లో అష్ట సంఖ్యలను వ్రాయవలసిన అవసరం లేదు, కానీ అవి ఏమిటో మీరు తెలుసుకోవాలి. " అన్ని తరువాత, మీరు ఇతరులు వ్రాసిన కోడ్‌ను చదవవలసి ఉంటుంది. మరియు పైన చెప్పినట్లుగా, ప్రోగ్రామర్లు పెద్ద ఆవిష్కర్తలు.

సరే, మీరు వెళ్లి ప్రతి సంఖ్య ముందు 0 అని వ్రాయలేరని గుర్తుంచుకోండి."

"అయితే అది ఆక్టల్‌గా ఉండాలని నేను అనుకుంటే, నేను చేయగలనా?"

"అవును.

బైనరీ ఎన్‌కోడింగ్

"మీకు ఇంకా అర్థం కాకపోయినా, బైనరీ ఎన్‌కోడింగ్ మీ మాతృభాష. దాని గురించి నేను మీకు గుర్తు చేస్తాను. ఆక్టల్‌లో 0-7 అంకెలు మాత్రమే ఉంటే, బైనరీలో 0 మరియు 1 మాత్రమే ఉంటాయి."

"ఈ ఎన్‌కోడింగ్ ఎందుకు అవసరం?"

"నేను పైన చెప్పినట్లుగా, ఇది కంప్యూటర్ యొక్క అంతర్గత నిర్మాణంతో ప్రతిదీ కలిగి ఉంది. కంప్యూటర్‌లోని ప్రతిదీ విద్యుత్తుతో నడుస్తుంది మరియు ఇది జరిగినప్పుడు, విద్యుత్తును ఉపయోగించి ఏదైనా నిల్వ చేయడానికి మరియు ప్రసారం చేయడానికి రెండు రాష్ట్రాలను ఉపయోగించడం అత్యంత ప్రభావవంతమైన మార్గం: వైర్‌లో విద్యుత్ లేదు (సున్నా) మరియు విద్యుత్ (ఒకటి) ఉంది."

"అందుకే ఇది చాలా ప్రజాదరణ పొందింది ... మ్, నేను నిజంగా ఈ భాషని గుర్తుంచుకోవడం ప్రారంభించినట్లుంది!"

"అన్ని రోబోట్‌లు దీనిని సంపూర్ణంగా అర్థం చేసుకుంటాయి. అయినప్పటికీ ఇది జావాలో చాలా తరచుగా ఉపయోగించబడదు. జావా అనేది ఒక ఉన్నత-స్థాయి భాషగా పరిగణించబడుతుంది, అది నడుస్తున్న హార్డ్‌వేర్ నుండి పూర్తిగా సంగ్రహించబడింది. నిజానికి, డేటాను నిల్వ చేయడానికి మరియు ప్రాసెస్ చేయడానికి ఏ ఫార్మాట్ ఉపయోగించబడుతుందో మీరు నిజంగా శ్రద్ధ వహిస్తారా? కంప్యూటర్ లోపల?

"కానీ గత దశాబ్దాలుగా, ప్రోగ్రామర్లు బైనరీ ఎన్‌కోడింగ్‌ను ఇష్టపడుతున్నారు (మరియు దాని ఆధారంగా ఇతర ఎన్‌కోడింగ్‌లు). ఫలితంగా, బైనరీ సంఖ్యలను ఇన్‌పుట్‌లుగా తీసుకునే ఆపరేటర్‌లను జావా కలిగి ఉంది. మరియు ఫ్లోటింగ్ పాయింట్ నంబర్‌ల ఖచ్చితత్వం వాటి బైనరీపై ఆధారపడి ఉంటుంది. ప్రాతినిథ్యం.

"సంక్షిప్తంగా, ఈ ఎన్‌కోడింగ్ గురించి మీకు తెలియకపోవడం కంటే తెలుసుకోవడం మంచిది."

"సరి. మరియు ఆక్టల్ ఎన్‌కోడింగ్‌లో జరిగినట్లుగా, బైనరీ సిస్టమ్‌ని ఉపయోగించి లిటరల్స్‌ను ఎన్‌కోడ్ చేయడానికి జావా ఒక మార్గాన్ని కలిగి ఉంది."

"కాబట్టి అవి 0లు మరియు 1లతో మాత్రమే రూపొందించబడతాయా?"

"సరిగ్గా. జావా కంపైలర్‌కు కోడ్‌లో సున్నాలు మరియు వాటితో కూడిన దశాంశ సంఖ్య కంటే బైనరీలో ఎన్‌కోడ్ చేయబడిన సంఖ్యా అక్షరాలు ఉన్నాయని అర్థం చేసుకోవడానికి, అన్ని బైనరీ లిటరల్స్ ఉపసర్గ 0b ('b) తో ప్రారంభం కావడం ఆచారం. బైనరీ అనే పదం నుండి వచ్చింది).

ఉదాహరణలు:

కోడ్ గమనికలు
int x = 0b100; 
х 4: 1*4+0*2+0
int x = 0b1111; 
х 15: 1*8+1*4+1*2+1
int x = 0b1111000111; 
x 967: 1*2 9 +1*2 8 +1*2 7 +1*2 6 +0*2 5 +0*2 4 +0 *2 3 +1*2 2 +1*2+1;
int x = 0b12000;
ఇది కంపైల్ చేయదు: బైనరీ ఎన్‌కోడింగ్‌లో ఉపయోగించే చిహ్నాలలో 2 ఒకటి కాదు.

హెక్సాడెసిమల్ ఎన్‌కోడింగ్

"నాల్గవ శక్తికి రెండు ఏమిటి?"

"పదహారు. నా వరకు వచ్చిన రోబోని అడగడానికి మీరు సరైన ప్రశ్నను కనుగొన్నారు!"

"మీకు చాలా దూరం వచ్చినట్లుంది. ఏమైనా పదహారు. ఆక్టల్ మరియు బైనరీ ఎన్‌కోడింగ్‌లతో పాటు, అక్షరాలను హెక్సాడెసిమల్‌లో కూడా వ్రాయవచ్చు. ఇది చాలా ప్రజాదరణ పొందిన ఎన్‌కోడింగ్.

"ఎందుకంటే, బైనరీ సంజ్ఞామానం వాస్తవానికి సంఖ్యలు ఎలా నిల్వ చేయబడుతుందో దానికి దగ్గరగా ఉన్నప్పటికీ, మానవులు అటువంటి సంఖ్యలతో సమర్థవంతంగా పని చేయడం చాలా కష్టం: బైనరీలో, సంఖ్య 1 మిలియన్ 20 అంకెలు, 7 కాదు.

"అందుకే ప్రోగ్రామర్లు హెక్సాడెసిమల్ సిస్టమ్‌తో ముందుకు వచ్చారు. అన్నింటికంటే, మీరు సరిగ్గా గుర్తించినట్లుగా, 16 అనేది 4వ శక్తికి 2 పెరిగింది, కాబట్టి సరిగ్గా 4 బిట్‌లు ఒక హెక్సాడెసిమల్ అంకెకు అనుగుణంగా ఉంటాయి.

"కాబట్టి ప్రతి 4 బిట్‌లను ఇప్పుడు ఒకే హెక్సాడెసిమల్ అంకెలలో వ్రాయవచ్చు."

"కుడి. హెక్సాడెసిమల్ ఎన్‌కోడింగ్ కూడా దాని స్వంత ప్రత్యేక ఉపసర్గను కలిగి ఉంది: 0x . ఉదాహరణలు:

దశాంశ సంఖ్య బైనరీ సంజ్ఞామానం హెక్సాడెసిమల్ సంజ్ఞామానం
17 0b 0001 0001 0x 1 1
4 1 0b 0010 1 00 1 0x 2 9
85 0b 0101 0101 0x 5 5
256 0b 1 0000 0000 0x 1 0 0

"సరే, కాబట్టి మనకు అష్ట వ్యవస్థ ఎలా వచ్చిందో స్పష్టంగా ఉంది: మేము కేవలం 8 మరియు 9 సంఖ్యలను విసిరివేసాము. అయితే హెక్సాడెసిమల్ సిస్టమ్‌లో 6 మిస్సింగ్ అంకెలు ఎక్కడ లభిస్తాయి? నేను వాటిని చూడాలనుకుంటున్నాను!"

"ఇదంతా సూటిగా ఉంది. ఆంగ్ల అక్షరమాలలోని మొదటి 6 అక్షరాలు 6 మిస్సింగ్ అంకెలుగా తీసుకోబడ్డాయి: A (10), B (11), C (12), D (13), E (14), F (15) .

ఉదాహరణలు:

హెక్సాడెసిమల్ సంజ్ఞామానం బైనరీ సంజ్ఞామానం దశాంశ సంఖ్య
0x 1 0b 0000 0001 1
0x 9 0b 0000 1001 9
0x 0b 0000 1010 10
0x బి 0b 0000 1011 11
0x C 0b 0000 1100 12
0x డి 0b 0000 1101 13
0x 0b 0000 1110 14
0x F 0b 0000 1111 15
0x 1 F 0b 0001 1111 31
0x A F 0b 1010 1111 175
0x F F 0b 1111 1111 255
0x F F F 0b 1111 1111 1111 4095

"మీరు హెక్సాడెసిమల్ సంఖ్యను దశాంశానికి ఎలా మారుస్తారు?"

"ఇది చాలా సులభం. మీరు 0 x A F C F సంఖ్యను కలిగి ఉన్నారని అనుకుందాం . అది దశాంశంలో ఎంత? ముందుగా, మనకు స్థాన సంఖ్య వ్యవస్థ ఉంది, అంటే మొత్తం సంఖ్యకు ప్రతి అంకె యొక్క సహకారం ఒక కారకం ద్వారా పెరుగుతుంది. 16 మనం కుడి నుండి ఎడమకు వెళ్ళేటప్పుడు:

A * 16 3 + F * 16 2 + C * 16 1 + F

A గుర్తు సంఖ్య 10కి అనుగుణంగా ఉంటుంది, C అక్షరం మనకు 12 సంఖ్య ఉందని చెబుతుంది మరియు F అక్షరం పదిహేను సూచిస్తుంది. మాకు దొరికింది:

10 * 16 3 + 15 * 16 2 + 12 * 16 1 + 15

అంకెలకు అనుగుణంగా ఉండే వివిధ శక్తులకు 16ను పెంచడం ద్వారా, మనకు లభిస్తుంది:

10 * 4096 + 15 * 256 + 12 * 16 + 15

మేము ప్రతిదీ సంగ్రహించి, పొందుతాము:

45007

"45007 మెమరీలో ఎలా నిల్వ చేయబడిందో ఇప్పుడు మీకు తెలుసు."

"అవును, నేను చేస్తున్నాను. ఇది 0x A F C F "

"ఇప్పుడు దానిని బైనరీకి మారుద్దాం. బైనరీలో ఇది ఇలా ఉంటుంది:

0b 1010 1111 1100 1111

"నాలుగు బిట్‌ల ప్రతి సెట్ ఖచ్చితంగా ఒక హెక్సాడెసిమల్ అక్షరానికి అనుగుణంగా ఉంటుంది. అది చాలా సౌకర్యవంతంగా ఉంటుంది. ఎటువంటి గుణకారం లేదా ఘాతాంకం లేకుండా."