{"id":76,"date":"2021-06-06T19:17:54","date_gmt":"2021-06-06T17:17:54","guid":{"rendered":"http:\/\/automatico.freevar.com\/?page_id=76"},"modified":"2022-02-16T14:08:37","modified_gmt":"2022-02-16T13:08:37","slug":"aritmetica-ieee-p754","status":"publish","type":"page","link":"https:\/\/automatico.freevar.com\/index.php\/cp-m-80-2\/hitech-c-per-z80\/aritmetica-ieee-p754\/","title":{"rendered":"IEEE P754 Hi-Tech Arithmetic C 3.09"},"content":{"rendered":"\r\n<h2 class=\"wp-block-heading\">Representation<\/h2>\r\n<p><span style=\"font-family: verdana, geneva, sans-serif;\">\r\n\r\n<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\"><span class=\"\">The format for the representation of floating point numbers in computers, in general, is that dictated by the IEEE 754 standard. discrete subset of the real field.<\/span><\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\">The IEEE 754 standard defines a form of representation of the real number: the real number is first divided into the integer part and the fractional part and transformed into a binary base, then once normalized\u00a0<a href=\"https:\/\/automatico-freevar-com.translate.goog\/index.php\/cp-m-80-2\/hitech-c-per-z80\/aritmetica-ieee-p754\/?_x_tr_sl=it&amp;_x_tr_tl=en&amp;_x_tr_hl=it&amp;_x_tr_pto=nui,elem#sdfootnote1sym\"><sup>1<\/sup><\/a> is put in the form +\/- 1, mantissa x 2 <sup>E .<\/sup><\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\">For example, 1000.0 can be written + 1 \u00d7 10\u00a0<sup>3<\/sup> in base ten and + 0.1953125\u00a0 x 2 <sup>10<\/sup> in base two.<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\">In our computer the numbers in Floating Point are written in this form:<\/span><\/p>\r\n<p><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">\r\n\r\n<\/span><\/p>\r\n<figure class=\"wp-block-table\">\r\n<table style=\"width: 80.2576%; height: 24px;\">\r\n<tbody>\r\n<tr style=\"height: 24px;\">\r\n<td style=\"height: 24px;\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">S<\/span><\/td>\r\n<td style=\"height: 24px;\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">E<\/span><\/td>\r\n<td style=\"height: 24px;\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">E<\/span><\/td>\r\n<td style=\"height: 24px;\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">E<\/span><\/td>\r\n<td style=\"height: 24px;\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">E<\/span><\/td>\r\n<td style=\"height: 24px;\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">E<\/span><\/td>\r\n<td style=\"height: 24px;\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">E<\/span><\/td>\r\n<td style=\"height: 24px;\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">E<\/span><\/td>\r\n<td style=\"height: 24px;\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">M<\/span><\/td>\r\n<td style=\"height: 24px;\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">M<\/span><\/td>\r\n<td style=\"height: 24px;\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">M<\/span><\/td>\r\n<td style=\"height: 24px;\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">M<\/span><\/td>\r\n<td style=\"height: 24px;\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">M<\/span><\/td>\r\n<td style=\"height: 24px;\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">M<\/span><\/td>\r\n<td style=\"height: 24px;\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">M<\/span><\/td>\r\n<td style=\"height: 24px;\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">M<\/span><\/td>\r\n<td style=\"height: 24px;\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">M<\/span><\/td>\r\n<td style=\"height: 24px;\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">M<\/span><\/td>\r\n<td style=\"height: 24px;\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">M<\/span><\/td>\r\n<td style=\"height: 24px;\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">M<\/span><\/td>\r\n<td style=\"height: 24px;\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">M<\/span><\/td>\r\n<td style=\"height: 24px;\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">M<\/span><\/td>\r\n<td style=\"height: 24px;\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">M<\/span><\/td>\r\n<td style=\"height: 24px;\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">M<\/span><\/td>\r\n<td style=\"height: 24px;\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">M<\/span><\/td>\r\n<td style=\"height: 24px;\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">M<\/span><\/td>\r\n<td style=\"height: 24px;\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">M<\/span><\/td>\r\n<td style=\"height: 24px;\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">M<\/span><\/td>\r\n<td style=\"height: 24px;\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">M<\/span><\/td>\r\n<td style=\"height: 24px;\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">M<\/span><\/td>\r\n<td style=\"height: 24px;\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">M<\/span><\/td>\r\n<td style=\"height: 24px;\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">M<\/span><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/figure>\r\n<p><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">\r\n\r\n<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\">A bit for the\u00a0<strong>S<\/strong>ign of Mantissa, 7 bits for the\u00a0 <strong>E<\/strong>xponent\u00a0and 24 bits for\u00a0<strong>M<\/strong>antissa. This is because the designers of the Hi-tech C compiler slightly modified the IEEE P754 standard (P means single precision) to better handle FP numbers with the Z80 processor machine registers. Using two double 8-bit registers they could hold the entire FP number in registers HL and DE.<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\">Let&#8217;s now see an example of adding numbers in FP.\u00a0The number 3489.0 in decimal base is encoded in hexadecimal as\u00a0<strong>4C DA 10 00<\/strong>\u00a0.\u00a0The compiler places these values \u200b\u200bin the machine registers: in HL we will have\u00a0<strong>4C DA<\/strong>\u00a0and in DE we will have\u00a0<strong>10 00<\/strong>\u00a0.\u00a0So in the machine registers HL and DE we have:<\/span><\/p>\r\n<p><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">\r\n\r\n<\/span><\/p>\r\n<figure class=\"wp-block-table\">\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">H<\/span><\/td>\r\n<td><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">L<\/span><\/td>\r\n<td><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">D<\/span><\/td>\r\n<td><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">E<\/span><\/td>\r\n<\/tr>\r\n<tr>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\"><strong>4C<\/strong><\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\"><strong>DA<\/strong><\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\"><strong>10<\/strong><\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\"><strong>00<\/strong><\/span><\/td>\r\n<\/tr>\r\n<tr>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\"><strong>0<\/strong>100 1100<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\"><strong>1101 1010<\/strong><\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\"><strong>0001 0000<\/strong><\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\"><strong>0000 0000<\/strong><\/span><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/figure>\r\n<p><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">\r\n\r\n<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\">In H bit 7 is the sign (1 negative, 0 positive) and the remaining 7 bits are for the exponent that distinguish 128 values.\u00a02\u00a0<sup>0<\/sup>\u00a0is fixed\u00a0at the decimal value 65 (\u00a0<strong>100 0001<\/strong>\u00a0binary, 41 hexadecimal): values \u200b\u200bgreater than 65 are positive powers;\u00a0values \u200b\u200bbelow 65 are negative powers.\u00a0In this case we have that the sign is positive (bit7 = 0), the exponent\u00a0<strong>100 1100<\/strong>\u00a0is 76 decimal.\u00a0We said that 65 decimal equals the power 2\u00a0<sup>0<\/sup>\u00a0, with the difference 76 &#8211; 65 we have the exponent of two, so 2\u00a0<sup>11<\/sup>\u00a0.<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\">Let us now see the mantissa which is contained in the 3 bytes of the L and DE registers.<\/span><\/p>\r\n<p class=\"has-text-align-center\" style=\"text-align: center;\"><span style=\"font-size: 14pt; font-family: verdana, geneva, sans-serif;\">1101 1010 0001 0000 0000 0000<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\">The first bit on the left is the weight of 2\u00a0<sup>0<\/sup>\u00a0, the second of 2\u00a0<sup>-1<\/sup>\u00a0, the third of 2\u00a0<sup>&#8211;\u00a0<\/sup><sup>2<\/sup>\u00a0and so on, so multiplying the powers of two by the bits corresponding to the position in the mantissa we obtain (omitting the products in the summation null):<\/span><\/p>\r\n<p class=\"has-text-align-center\" style=\"text-align: center;\"><span style=\"font-size: 14pt; font-family: verdana, geneva, sans-serif;\">1 + 1\/2 + 1\/8 + 1\/16 + 1\/64 + 1\/2048 = 1.70361328125<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\">So we have 1.70361328125 * 2\u00a0<sup>11<\/sup>\u00a0or 3489.0 in decimal base.<\/span><\/p>\r\n<p><span style=\"font-family: verdana, geneva, sans-serif;\">\r\n\r\n<\/span><\/p>\r\n<h2 class=\"wp-block-heading\">Sum and difference<\/h2>\r\n<p><span style=\"font-family: verdana, geneva, sans-serif;\">\r\n\r\n<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\">Now let&#8217;s see how two numbers can be added in FP form.<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\">Let&#8217;s consider the two numbers:<\/span><\/p>\r\n<table style=\"border-collapse: collapse; width: 91.4115%; height: 96px;\">\r\n<tbody>\r\n<tr>\r\n<td style=\"width: 12.451%;\"><span style=\"font-size: 18.6667px; font-family: verdana, geneva, sans-serif;\">4C DA 10 00\u00a0<\/span><\/td>\r\n<td style=\"width: 7.54902%;\">\u00a0<\/td>\r\n<td style=\"width: 10%;\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\"><strong>0<\/strong>100<\/span><\/td>\r\n<td style=\"width: 10%;\"><span style=\"font-size: 14pt; font-family: verdana, geneva, sans-serif;\">1100\u00a0<\/span><\/td>\r\n<td style=\"width: 10%;\"><span style=\"font-size: 14pt; font-family: verdana, geneva, sans-serif;\">1101\u00a0<\/span><\/td>\r\n<td style=\"width: 10%;\"><span style=\"font-size: 14pt; font-family: verdana, geneva, sans-serif;\">1010\u00a0<\/span><\/td>\r\n<td style=\"width: 10%;\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">0001<\/span><\/td>\r\n<td style=\"width: 10%;\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">0000<\/span><\/td>\r\n<td style=\"width: 10%;\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">0000<\/span><\/td>\r\n<td style=\"width: 10%;\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">0000<\/span><\/td>\r\n<\/tr>\r\n<tr>\r\n<td style=\"width: 12.451%;\"><span style=\"font-size: 18.6667px; font-family: verdana, geneva, sans-serif;\">CD DB 01 01<\/span><\/td>\r\n<td style=\"width: 7.54902%;\">\u00a0<\/td>\r\n<td style=\"width: 10%;\"><span style=\"font-family: verdana, geneva, sans-serif;\"><strong style=\"font-size: 18.6667px;\"><span class=\"\">1<\/span><\/strong><span class=\"\" style=\"font-size: 18.6667px;\">100\u00a0<\/span><\/span><\/td>\r\n<td style=\"width: 10%;\"><span style=\"font-size: 18.6667px; font-family: verdana, geneva, sans-serif;\">1101\u00a0<\/span><\/td>\r\n<td style=\"width: 10%;\"><span style=\"font-size: 18.6667px; font-family: verdana, geneva, sans-serif;\">1101\u00a0<\/span><\/td>\r\n<td style=\"width: 10%;\"><span style=\"font-size: 18.6667px; font-family: verdana, geneva, sans-serif;\">1011\u00a0<\/span><\/td>\r\n<td style=\"width: 10%;\"><span style=\"font-size: 18.6667px; font-family: verdana, geneva, sans-serif;\">0000\u00a0<\/span><\/td>\r\n<td style=\"width: 10%;\"><span style=\"font-size: 18.6667px; font-family: verdana, geneva, sans-serif;\">0001\u00a0<\/span><\/td>\r\n<td style=\"width: 10%;\"><span style=\"font-size: 18.6667px; font-family: verdana, geneva, sans-serif;\">0000\u00a0<\/span><\/td>\r\n<td style=\"width: 10%;\"><span style=\"font-size: 18.6667px; font-family: verdana, geneva, sans-serif;\">0001<\/span><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<p class=\"has-text-align-center\"><span style=\"font-size: 14pt;\">The first number starts with <span style=\"font-size: 18pt;\">0<\/span> so the sign of the mantissa is positive, the second starts with <span style=\"font-size: 18pt;\">1<\/span> so the sign of the mantissa is negative.<\/span><\/p>\r\n<p><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">\r\n\r\n<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\"><span class=\"\">The second FP number, the exponent (remember that the exponent are the bits in bold) is 77 decimal. <\/span>We know that the offset is 65 decimal so the exponent of 2 is 12 decimal.\u00a0According to the calculation previously exposed, the mantissa gives us 1.71096813678.<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\">So 1.71096813678 * 2\u00a0<sup>1\u00a0<\/sup><sup>2<\/sup> results\u00a0 -7008.1255 (approximately) taking into account the sign.<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\">Let&#8217;s now see an algorithm that allows us to add two numbers in FP format.<\/span><\/p>\r\n<ul>\r\n<li><span style=\"font-size: 14pt;\">compare the values \u200b\u200bof the exponents<\/span>\r\n<ul>\r\n<li><span style=\"font-size: 14pt;\">if the exponents have different values \u200b\u200bthen denormalize the FP with the smallest exponent by making it equal to the largest exponent with consequent shift to the right the bits of\u00a0 mantissa <a href=\"https:\/\/automatico-freevar-com.translate.goog\/index.php\/cp-m-80-2\/hitech-c-per-z80\/aritmetica-ieee-p754\/?_x_tr_sl=it&amp;_x_tr_tl=en&amp;_x_tr_hl=it&amp;_x_tr_pto=nui,elem#sdfootnote2sym\"><sup>2<\/sup><\/a>\u00a0.<\/span><\/li>\r\n<\/ul>\r\n<\/li>\r\n<li><span style=\"font-size: 14pt;\">Do the 2&#8217;s complement of the mantissa of negative FP<\/span><\/li>\r\n<li><span style=\"font-size: 14pt;\">add<\/span><\/li>\r\n<li><span style=\"font-size: 14pt;\">normalize<\/span><\/li>\r\n<\/ul>\r\n<p><span style=\"font-size: 14pt;\">Let&#8217;s try to clarify with an example, let&#8217;s consider the two previous FP numbers: 1.70361328125 x 2 <sup>11<\/sup> and 1.71096813678 x 2\u00a0<sup>1\u00a0<\/sup><sup>2<\/sup>\u00a0.<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\">The representation in hexadecimal and in binary of the two numbers is:<\/span><\/p>\r\n<table style=\"border-collapse: collapse; width: 100%;\">\r\n<tbody>\r\n<tr>\r\n<td style=\"width: 11.9741%;\"><span style=\"font-size: 18.6667px; font-family: verdana, geneva, sans-serif;\">4C DA 10 00\u00a0<\/span><\/td>\r\n<td style=\"width: 8.61335%;\">\u00a0<\/td>\r\n<td style=\"width: 79.4125%;\"><span style=\"font-family: verdana, geneva, sans-serif;\"><span style=\"font-size: 18.6667px;\">0<\/span><strong style=\"font-size: 18.6667px;\">100 1100<\/strong><span style=\"font-size: 18.6667px;\">\u00a01101 1010 0001 0000 0000 0000<\/span><\/span><\/td>\r\n<\/tr>\r\n<tr>\r\n<td style=\"width: 11.9741%;\"><span style=\"font-size: 18.6667px; font-family: verdana, geneva, sans-serif;\">CD DB 01 01\u00a0<\/span><\/td>\r\n<td style=\"width: 8.61335%;\">\u00a0<\/td>\r\n<td style=\"width: 79.4125%;\"><span style=\"font-family: verdana, geneva, sans-serif;\"><span style=\"font-size: 18.6667px;\">1<\/span><strong style=\"font-size: 18.6667px;\">100 1101<\/strong><span style=\"font-size: 18.6667px;\">\u00a01101 1011 0000 0001 0000 0001<\/span><\/span><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<p><span style=\"font-size: 14pt;\">\u00a0<\/span><span style=\"font-size: 14pt;\">We see that the difference between the exponents is 1 (in bold), so the FP number with the lowest exponent 2\u00a0<sup>11<\/sup>\u00a0must become 2\u00a0<sup>1\u00a0<\/sup><sup>2<\/sup>\u00a0.<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\">After the operation of unitary increment of the exponent with translation to the right by one place of the mantissa, we have that the first number FP becomes:<\/span><\/p>\r\n<table style=\"border-collapse: collapse; width: 100%;\">\r\n<tbody>\r\n<tr>\r\n<td style=\"width: 11.8247%;\"><span style=\"font-size: 18.6667px; font-family: verdana, geneva, sans-serif;\">4D 6D 08 00<\/span><\/td>\r\n<td style=\"width: 8.53869%;\">\u00a0<\/td>\r\n<td style=\"width: 79.6365%;\"><span style=\"font-family: verdana, geneva, sans-serif;\"><span style=\"font-size: 18.6667px;\">\u00a00<\/span><strong style=\"font-size: 18.6667px;\">100 1101<\/strong><span style=\"font-size: 18.6667px;\">\u00a00110 1101 0000 1000 000 0000<\/span><\/span><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<p><span style=\"font-size: 14pt;\">which is now 0.851806640625 x 2 <sup>1\u00a0<\/sup><sup>2<\/sup> or again 3489.0 in decimal base (note that 0.851806640625 is half of 1.70361328125). Now the exponents are the same (both 4D), apart from the 1 bit of the sign of the second FP number.<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\">To add\u00a0the mantissas it is\u00a0necessary to complement\u00a0<a href=\"https:\/\/automatico-freevar-com.translate.goog\/index.php\/cp-m-80-2\/hitech-c-per-z80\/aritmetica-ieee-p754\/?_x_tr_sl=it&amp;_x_tr_tl=en&amp;_x_tr_hl=it&amp;_x_tr_pto=nui,elem#sdfootnote3sym\"><sup>3<\/sup><\/a>\u00a0to 2 the mantissa of the second FP number which is negative.\u00a0The 2&#8217;s complement operation is necessary because the addition machine instructions do not consider the sign of numbers;\u00a0only one digital electronic circuit, the adder, is used for both addition and subtraction.\u00a0Let&#8217;s now take the second FP number:<\/span><\/p>\r\n<table style=\"border-collapse: collapse; width: 100%;\">\r\n<tbody>\r\n<tr>\r\n<td style=\"width: 11.8247%;\"><span style=\"font-size: 14pt; text-align: center; font-family: verdana, geneva, sans-serif;\">CD DB 01 01<\/span><\/td>\r\n<td style=\"width: 8.53869%;\">\u00a0<\/td>\r\n<td style=\"width: 79.6365%;\"><span style=\"font-size: 14pt; font-family: verdana, geneva, sans-serif;\">\u00a01100 1101 1101 1011 0000 0001 0000 0001<\/span><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<p><span style=\"font-size: 14pt;\">By inverting the bits of the mantissa and adding <span style=\"font-size: 18pt;\">1<\/span> we have:<\/span><\/p>\r\n<table style=\"border-collapse: collapse; width: 100%;\">\r\n<tbody>\r\n<tr>\r\n<td style=\"width: 11.8247%;\"><span style=\"font-size: 18.6667px; text-align: center; font-family: verdana, geneva, sans-serif;\">CD 24 FE FF<\/span><\/td>\r\n<td style=\"width: 8.53869%;\">\u00a0<\/td>\r\n<td style=\"width: 79.6365%;\"><span style=\"font-size: 18.6667px; text-align: center; font-family: verdana, geneva, sans-serif;\">\u00a00100 1101 0010 0100 1111 1110 1111 1111<\/span><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<p><span style=\"font-size: 14pt;\"><span class=\"\">Now we can add the two FP numbers:<\/span><\/span><\/p>\r\n<table style=\"border-collapse: collapse; width: 100%;\">\r\n<tbody>\r\n<tr>\r\n<td style=\"width: 11.7812%;\"><span style=\"font-size: 18.6667px; text-align: center; font-family: verdana, geneva, sans-serif;\">4D 6D 08 00\u00a0<\/span><\/td>\r\n<td style=\"width: 8.49512%;\">\u00a0<\/td>\r\n<td style=\"width: 33.5138%;\"><span style=\"font-size: 18.6667px; text-align: center; font-family: verdana, geneva, sans-serif;\">0100 1101 0110 1101 0000 1000 0000 0000\u00a0<\/span><\/td>\r\n<td style=\"width: 46.2099%;\"><span style=\"font-size: 18.6667px; text-align: center;\">\u00a0 \u00a0+<\/span><\/td>\r\n<\/tr>\r\n<tr>\r\n<td style=\"width: 11.7812%;\"><span style=\"font-size: 18.6667px; text-align: center; font-family: verdana, geneva, sans-serif;\">CD 24 FE FF\u00a0 \u00a0\u00a0<\/span><\/td>\r\n<td style=\"width: 8.49512%;\">\u00a0<\/td>\r\n<td style=\"width: 33.5138%;\"><span style=\"font-size: 18.6667px; text-align: center; font-family: verdana, geneva, sans-serif;\">0100 1101 0010 0100 1111 1110 1111 1111<\/span><\/td>\r\n<td style=\"width: 46.2099%;\"><span style=\"font-size: 18.6667px; text-align: center;\">\u00a0 \u00a0=<\/span><\/td>\r\n<\/tr>\r\n<tr>\r\n<td style=\"width: 11.7812%;\"><span style=\"font-size: 18.6667px; text-align: center; font-family: verdana, geneva, sans-serif;\">CD 92 06 FF\u00a0\u00a0<\/span><\/td>\r\n<td style=\"width: 8.49512%;\">\u00a0<\/td>\r\n<td style=\"width: 33.5138%;\"><span style=\"font-family: verdana, geneva, sans-serif;\"><span style=\"font-size: 18.6667px; text-align: center;\">1100 1110 <\/span><strong style=\"font-size: 18.6667px; text-align: center;\">1<\/strong><span style=\"font-size: 18.6667px; text-align: center;\">001 0010 0000 0110 1111 1111<\/span><\/span><\/td>\r\n<td style=\"width: 46.2099%;\">\u00a0<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<p>&nbsp;<\/p>\r\n<p><span style=\"font-size: 14pt;\">The first bit of mantissa has the value <strong><span style=\"font-size: 18pt;\">1<\/span><\/strong>, which indicates that in the sum operation we have obtained a negative mantissa in 2&#8217;s complement. We must therefore do the 2&#8217;s complement only of mantissa, obtaining (in bold):<\/span><\/p>\r\n<table style=\"border-collapse: collapse; width: 100%;\">\r\n<tbody>\r\n<tr>\r\n<td style=\"width: 11.8247%;\"><span style=\"font-size: 14pt; font-family: verdana, geneva, sans-serif;\">CD 6D F9 01\u00a0\u00a0<\/span><\/td>\r\n<td style=\"width: 8.53869%;\">\u00a0<\/td>\r\n<td style=\"width: 79.6365%;\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1100 1110\u00a0<strong>0110 1101 1111 1001 0000 0001<\/strong><\/span><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<p class=\"has-text-align-center\" style=\"text-align: center;\"><span style=\"font-family: verdana, geneva, sans-serif;\"><span style=\"font-size: 14pt;\">\u00a0<\/span><span style=\"font-size: 14pt;\">-0.859161496162415 x 2 <sup>1\u00a0<\/sup><sup>2<\/sup>\u00a0= -3519.1255<\/span><\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\">Finally we normalize the result:<\/span><\/p>\r\n<table style=\"border-collapse: collapse; width: 100%; height: 27px;\">\r\n<tbody>\r\n<tr style=\"height: 27px;\">\r\n<td style=\"width: 11.8247%; height: 27px;\"><span style=\"font-size: 18.6667px; font-family: verdana, geneva, sans-serif;\">CC DB F2 02\u00a0\u00a0<\/span><\/td>\r\n<td style=\"width: 8.53869%; height: 27px;\">\u00a0<\/td>\r\n<td style=\"width: 79.6365%; height: 27px;\"><span style=\"font-size: 18.6667px; font-family: verdana, geneva, sans-serif;\">1100 1100 1101 1011 1111 0010 0000 0010<\/span><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<p class=\"has-text-align-center\" style=\"text-align: left;\"><span style=\"font-size: 14pt;\">That is -1.71832299232483 x 2 <sup>11<\/sup>\u00a0equal to -3519.1255 that is the result of the sum between 3489.0 and -7008.1255.<\/span><\/p>\r\n<p><span style=\"font-family: verdana, geneva, sans-serif;\">\r\n\r\n<\/span><\/p>\r\n<h2 class=\"wp-block-heading\" style=\"text-align: left;\"><span style=\"font-family: georgia, palatino, serif;\"><strong>2&#8217;s Complement<\/strong><\/span><\/h2>\r\n<p><span style=\"font-family: verdana, geneva, sans-serif;\">\r\n\r\n<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\">The representation of the sign in binary arithmetic is given by the complement method.\u00a0Now let&#8217;s see the representation in 2&#8217;s complement with 8 bits.<\/span><\/p>\r\n<p><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">\r\n\r\n<\/span><\/p>\r\n<figure class=\"wp-block-table\">\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td class=\"has-text-align-right\" style=\"text-align: right;\" data-align=\"right\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td class=\"has-text-align-right\" style=\"text-align: right;\" data-align=\"right\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td class=\"has-text-align-right\" style=\"text-align: right;\" data-align=\"right\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">0<\/span><\/td>\r\n<td class=\"has-text-align-right\" style=\"text-align: right;\" data-align=\"right\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">0<\/span><\/td>\r\n<td class=\"has-text-align-right\" style=\"text-align: right;\" data-align=\"right\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td class=\"has-text-align-right\" style=\"text-align: right;\" data-align=\"right\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">0<\/span><\/td>\r\n<td class=\"has-text-align-right\" style=\"text-align: right;\" data-align=\"right\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">0<\/span><\/td>\r\n<td class=\"has-text-align-right\" style=\"text-align: right;\" data-align=\"right\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">0<\/span><\/td>\r\n<td class=\"has-text-align-center\" data-align=\"center\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">\u00a0 Binary<\/span><\/td>\r\n<\/tr>\r\n<tr>\r\n<td class=\"has-text-align-right\" style=\"text-align: right;\" data-align=\"right\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">128<\/span><\/td>\r\n<td class=\"has-text-align-right\" style=\"text-align: right;\" data-align=\"right\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">\u00a0 64<\/span><\/td>\r\n<td class=\"has-text-align-right\" style=\"text-align: right;\" data-align=\"right\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">\u00a0 32<\/span><\/td>\r\n<td class=\"has-text-align-right\" style=\"text-align: right;\" data-align=\"right\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">\u00a0 16<\/span><\/td>\r\n<td class=\"has-text-align-right\" style=\"text-align: right;\" data-align=\"right\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">\u00a0 \u00a08<\/span><\/td>\r\n<td class=\"has-text-align-right\" style=\"text-align: right;\" data-align=\"right\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">\u00a0 \u00a04<\/span><\/td>\r\n<td class=\"has-text-align-right\" style=\"text-align: right;\" data-align=\"right\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">2<\/span><\/td>\r\n<td class=\"has-text-align-right\" style=\"text-align: right;\" data-align=\"right\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td class=\"has-text-align-center\" data-align=\"center\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">\u00a0 Normal<\/span><\/td>\r\n<\/tr>\r\n<tr>\r\n<td class=\"has-text-align-right\" style=\"text-align: right;\" data-align=\"right\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">-128<\/span><\/td>\r\n<td class=\"has-text-align-right\" style=\"text-align: right;\" data-align=\"right\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">\u00a0 \u00a0 64<\/span><\/td>\r\n<td class=\"has-text-align-right\" style=\"text-align: right;\" data-align=\"right\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">\u00a0 \u00a0 32<\/span><\/td>\r\n<td class=\"has-text-align-right\" style=\"text-align: right;\" data-align=\"right\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">\u00a0 \u00a0 16<\/span><\/td>\r\n<td class=\"has-text-align-right\" data-align=\"right\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">\u00a0 \u00a0 \u00a0 8<\/span><\/td>\r\n<td class=\"has-text-align-right\" data-align=\"right\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">\u00a0 \u00a0 \u00a0 4<\/span><\/td>\r\n<td class=\"has-text-align-right\" data-align=\"right\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">\u00a0 \u00a0 \u00a0 2<\/span><\/td>\r\n<td class=\"has-text-align-right\" data-align=\"right\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">\u00a0 \u00a0 \u00a0 1<\/span><\/td>\r\n<td class=\"has-text-align-center\" data-align=\"center\"><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">\u00a0 2&#8217;s Complement<\/span><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/figure>\r\n<p><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">\r\n\r\n<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\"><span class=\"\">The binary representation with available K bits uses 2\u00a0<\/span><sup><span class=\"\">k-1<\/span><\/sup><span class=\"\">\u00a0-1 distinct values.\u00a0<\/span>If we wanted to write -56 in 2&#8217;s complement with 8 bits available:<\/span><\/p>\r\n<p class=\"has-text-align-center\" style=\"text-align: center;\"><span style=\"font-size: 14pt; font-family: verdana, geneva, sans-serif;\">256 &#8211; 56 = 200 or 128 + 64 + 0 + 0 + 8 + 0 + 0 + 0 \u2192 1100 1000<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\">Interpreting 1100 1000 as in the third row of the previous table the 2&#8217;s complement:<\/span><\/p>\r\n<p class=\"has-text-align-center\" style=\"text-align: center;\"><span style=\"font-size: 14pt; font-family: verdana, geneva, sans-serif;\">-128 + 64 + 0 + 0 + 8 + 0 + 0 + 0 = -56<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\">Summarizing 1100 1000 is worth 200 decimal with the normal positional interpretation of powers of 2, while it is worth -56 decimal if we use the positional interpretation of the complement of 2.<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\">Now let&#8217;s see how to calculate the binary representation of an assigned negative number:<\/span><\/p>\r\n<p class=\"has-text-align-center\" style=\"text-align: center;\"><span style=\"font-size: 14pt; font-family: verdana, geneva, sans-serif;\">-74<\/span><\/p>\r\n<p class=\"has-text-align-center\" style=\"text-align: center;\"><span style=\"font-size: 14pt; font-family: verdana, geneva, sans-serif;\">-128 + X = -74<\/span><\/p>\r\n<p class=\"has-text-align-center\" style=\"text-align: center;\"><span style=\"font-size: 14pt; font-family: verdana, geneva, sans-serif;\">X = 128 &#8211; 74 = 54<\/span><\/p>\r\n<p class=\"has-text-align-center\" style=\"text-align: center;\"><span style=\"font-size: 14pt; font-family: verdana, geneva, sans-serif;\">54 = 0 + 0 + 32 + 16 + 0 + 4 + 2 + 0 = 0011 0110<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\">To have the negative value we set bit 7 to 1, therefore<\/span><\/p>\r\n<p class=\"has-text-align-center\" style=\"text-align: center;\"><span style=\"font-size: 14pt;\"><span style=\"font-family: verdana, geneva, sans-serif;\">1011 0110<\/span> (which in decimal base is 182).<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\">As a test, if we add 74 to 182 we have\u00a0 a result 256, so 74 and 182 are complementary in 8 bits.<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\">We now show an example of subtraction.\u00a0We make the subtracting negative with the 2&#8217;s complement method. The sum between binary numbers is done by adding the corresponding bits of the addends considering the carry (1 + 1 = 0 with the carry of 1).\u00a0Let&#8217;s take the following values \u200b\u200bto do the subtraction:<\/span><\/p>\r\n<p class=\"has-text-align-center\" style=\"text-align: center;\"><span style=\"font-size: 14pt; font-family: verdana, geneva, sans-serif;\">14 &#8211; 12 = 2<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\">The value 14 expressed with 6 bits is 00 1110 while the value 12 is 00 1100.<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\">We complement the second value to 2:<\/span><\/p>\r\n<p style=\"text-align: center;\"><span style=\"font-size: 14pt; font-family: verdana, geneva, sans-serif;\">00 1100 \u2192 11 0011<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\">Let&#8217;s add 14 and -12<\/span><\/p>\r\n<p class=\"has-text-align-center\" style=\"text-align: center;\"><span style=\"font-size: 14pt; font-family: verdana, geneva, sans-serif;\">\u00a0 \u00a0 \u00a000 1110 +<\/span><\/p>\r\n<p class=\"has-text-align-center\" style=\"text-align: center;\"><span style=\"font-size: 14pt; font-family: verdana, geneva, sans-serif;\">\u00a0 \u00a0 \u00a011 0011 =<\/span><\/p>\r\n<p class=\"has-text-align-center\" style=\"text-align: center;\"><span style=\"font-size: 14pt; font-family: verdana, geneva, sans-serif;\">100 0001<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\">Now we add 1 to the result and omit bit 7:<\/span><\/p>\r\n<p class=\"has-text-align-center\" style=\"text-align: center;\"><span style=\"font-size: 14pt; font-family: verdana, geneva, sans-serif;\">00 0010 \u2192 2<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\">Note that if we had used an 8-bit representation we would have added only two zeros to the left and the carry would have been in the ninth bit on the left, for the purposes of the calculation we would have obtained the same result.<\/span><\/p>\r\n<p><span style=\"font-family: verdana, geneva, sans-serif;\">\r\n\r\n<\/span><\/p>\r\n<h2 class=\"wp-block-heading\" style=\"text-align: left;\"><span style=\"font-family: georgia, palatino, serif;\">Overflow<\/span><\/h2>\r\n<p><span style=\"font-family: verdana, geneva, sans-serif;\">\r\n\r\n<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\">By adding two values \u200b\u200bthat result in a value outside the range that can be represented in two&#8217;s complement, the result overwrites the sign bit, then in this case there is an overflow: the number of bits is not sufficient for the representation of the number.<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\"><span class=\"\">Basically to see if there is an overflow in the calculation we have to consider:<\/span><\/span><\/p>\r\n<ul>\r\n<li><span style=\"font-size: 14pt;\">operations between numbers of different sign are always correct as it is not possible to exit from the numerical extension<\/span><\/li>\r\n<li><span style=\"font-size: 14pt;\">operations between numbers of the same sign are correct if the result keeps the sign of the addends.<\/span><\/li>\r\n<\/ul>\r\n<p><span style=\"font-size: 14pt;\">Now let&#8217;s see how it is recognized if the subtraction has generated an overflow:<\/span><\/p>\r\n<p class=\"has-text-align-center\" style=\"text-align: center;\"><span style=\"font-size: 14pt; font-family: verdana, geneva, sans-serif;\">(-9) + (\u201328) = -37<\/span><\/p>\r\n<p><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">\r\n\r\n<\/span><\/p>\r\n<figure class=\"wp-block-table\">\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">0<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">0<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">0<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">0<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">0<\/span><\/td>\r\n<td><span style=\"font-size: 14pt;\">carry over<\/span><\/td>\r\n<\/tr>\r\n<tr>\r\n<td>\u00a0<\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\"><strong>1<\/strong><\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">0<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td style=\"text-align: right;\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">-9<\/span><\/td>\r\n<\/tr>\r\n<tr>\r\n<td>\u00a0<\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\"><strong>1<\/strong><\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">0<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">0<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">0<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">0<\/span><\/td>\r\n<td style=\"text-align: right;\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">-28<\/span><\/td>\r\n<\/tr>\r\n<tr>\r\n<td>\u00a0<\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\"><strong>1<\/strong><\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">0<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">0<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td style=\"text-align: right;\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">-37<\/span><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/figure>\r\n<p><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">\r\n\r\n<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\">Correct result, from two negative numbers we have a negative number (similarly if we had two positive numbers and one positive result).<\/span><\/p>\r\n<p><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">\r\n\r\n<\/span><\/p>\r\n<p class=\"has-text-align-center\" style=\"text-align: center;\"><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">(-73) + (-73) = -146<\/span><\/p>\r\n<p><span style=\"font-family: georgia, palatino, serif; font-size: 14pt;\">\r\n\r\n<\/span><\/p>\r\n<figure class=\"wp-block-table\">\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">0<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">0<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">0<\/span><\/td>\r\n<td><span style=\"font-size: 14pt;\">carry over<\/span><\/td>\r\n<\/tr>\r\n<tr>\r\n<td>\u00a0<\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\"><strong>1<\/strong><\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">0<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">0<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">-73<\/span><\/td>\r\n<\/tr>\r\n<tr>\r\n<td>\u00a0<\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\"><strong>1<\/strong><\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">0<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">0<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">-73<\/span><\/td>\r\n<\/tr>\r\n<tr>\r\n<td>\u00a0<\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\"><strong>0<\/strong><\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">0<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">1<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">0<\/span><\/td>\r\n<td><span style=\"font-family: verdana, geneva, sans-serif; font-size: 14pt;\">110<\/span><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/figure>\r\n<p><span style=\"font-family: verdana, geneva, sans-serif; font-size: 12pt;\">\r\n\r\n<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\">In this case, however, the sum of two negative numbers gave an incorrect positive result.<\/span><\/p>\r\n<p><span style=\"font-size: 14pt;\"><span class=\"\">Below there is a listing of a C program that shows what we have explained. <\/span>This program accepts a floating point number as input (within the limits of the compiler representation) and displays the binary representation, the Hi-tech modified IEEE754P hexadecimal form and more.<\/span><\/p>\r\n\r\n<pre>\u00a0<\/pre>\r\n<pre><pre class=\"brush: cpp; title: dec2ieee.c; notranslate\" title=\"dec2ieee.c\">\r\n#include &amp;lt;stdio.h&amp;gt;;\r\n#include &amp;lt;libv.h&amp;gt;;\r\n\r\nvoid printBinary(unsigned int n, int i)\r\n{\r\n      int k;\r\n      for (k = i - 1; k &amp;gt;= 0; k--)\r\n      {\r\n            if ((n &amp;gt;&amp;gt; k) &amp;gt; 1)\r\n               printf(&quot;1&quot;);\r\n            else\r\n               printf(&quot;0&quot;);\r\n      }\r\n}\r\n\r\ntypedef union\r\n{\r\n      float f;\r\n      struct\r\n      {\r\n            unsigned int mantissa0:8 ;\r\n            unsigned int mantissa1:8 ;\r\n            unsigned int mantissa2:8 ;\r\n            unsigned int exponent: 7;\r\n            unsigned int sign: 1;\r\n      } raw;\r\n} myfloat;\r\n\r\nvoid printIEEE(myfloat var)\r\n{\r\n      printf(&quot;%d | &quot;, var.raw.sign);\r\n      printBinary(var.raw.exponent, 7);\r\n      printf(&quot; |&quot;);\r\n      printBinary(var.raw.mantissa2, 8);\r\n      printf(&quot;|&quot;);\r\n      printBinary(var.raw.mantissa1, 8);\r\n      printf(&quot;|&quot;);\r\n      printBinary(var.raw.mantissa0, 8);\r\n      printf(&quot;|\\n&quot;);\r\n}\r\n\r\nint main()\r\n{\r\n      int vett&#x5B;24];\r\n      int j, k, num, espo;\r\n      float numero;\r\n      float vero;\r\n      myfloat var;\r\n      printf(&quot;Rappresentazione IEEE P754 modificata Hi-tech C\\n&quot;);\r\n      printf(&quot;Versione CP\/M Gennaio 2021 - Vito BLASI\\n&quot;);\r\n      printf(&quot;\\n&quot;);\r\n\r\n      printf(&quot;Numero reale :&quot;);\r\n      scanf(&quot;%f&quot;, &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;var.f);\r\n      printf(&quot;\\n&quot;);\r\n\r\n      printf(&quot;S |7 bit esp|  24 bit mantissa         |\\n&quot;);\r\n      printIEEE(var);\r\n\r\n      printf(&quot;\\n&quot;);\r\n\r\n      printf(&quot;Forma esadecimale : &quot;);\r\n\r\n      j = var.raw.sign*128+var.raw.exponent;\r\n      printf(&quot;%02x &quot;,j);\r\n      printf(&quot;%02x &quot;,var.raw.mantissa2);\r\n      printf(&quot;%02x &quot;,var.raw.mantissa1);\r\n      printf(&quot;%02x &quot;,var.raw.mantissa0);\r\n      printf(&quot;\\n&quot;);\r\n\r\n      num = var.raw.mantissa2;\r\n      for (k = 7; k &amp;amp;amp;amp;amp;amp;amp;gt;= 0; k--)\r\n      {\r\n            if ((num&amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;gt; k) &amp;amp;amp;amp;amp;amp;amp;amp; 1)\r\n               vett&#x5B;k+16]=1;\r\n            else\r\n               vett&#x5B;k+16]=0;\r\n      }\r\n\r\n      num = var.raw.mantissa1;\r\n      for (k = 7; k &amp;amp;amp;amp;amp;amp;amp;gt;= 0; k--)\r\n      {\r\n            if ((num &amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;gt; k) &amp;amp;amp;amp;amp;amp;amp;amp; 1)\r\n               vett&#x5B;k+8]=1;\r\n            else\r\n               vett&#x5B;k+8]=0;\r\n      }\r\n\r\n      num = var.raw.mantissa0;\r\n      for (k = 7; k &amp;amp;amp;amp;amp;amp;amp;gt;= 0; k--)\r\n      {\r\n            if ((num &amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;gt; k) &amp;amp;amp;amp;amp;amp;amp;amp; 1)\r\n               vett&#x5B;k]=1;\r\n            else\r\n               vett&#x5B;k]=0;\r\n      }\r\n\r\n      numero = 0;\r\n      j=0;\r\n      for (k = 23; k &amp;amp;amp;amp;amp;amp;amp;gt;= 0; k--)\r\n      {\r\n            numero = numero + vett&#x5B;k]*1.0\/power(2,j);\r\n\r\n            j++;\r\n      }\r\n\r\n      printf(&quot;Forma esponente 2 : &quot;);\r\n\r\n      if (var.raw.sign==1)\r\n      printf(&quot;-&quot;);\r\n\r\n      printf(&quot;%1.12f * &quot;,numero);\r\n\r\n      printf(&quot;2^%d \\n&quot;,var.raw.exponent-65);\r\n\r\n      espo = var.raw.exponent-65;\r\n      vero = numero*power(2.0,(float)(espo));\r\n      printf(&quot;Forma esponente 10: &quot;);\r\n      printf(&quot;%8.7e &quot;,vero);\r\n\r\n      return 0;\r\n}\r\n\r\n<\/pre><\/pre>\r\n<pre><br \/><br \/><br \/><br \/><\/pre>\r\n<p><a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=en&amp;nui=1&amp;u=https:\/\/automatico-freevar-com.translate.goog\/index.php\/cp-m-80-2\/hitech-c-per-z80\/aritmetica-ieee-p754\/?_x_tr_sl%3Dauto%26_x_tr_tl%3Den%26_x_tr_hl%3Den%26_x_tr_pto%3Dnui%23sdfootnote1anc\">1<\/a>\u00a0Normalization: it is advisable to represent the number, with a value at most equal to one before the comma, multiplied by 2 raised to an appropriate value.<\/p>\r\n<p>&nbsp;<\/p>\r\n<p><a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=en&amp;nui=1&amp;u=https:\/\/automatico-freevar-com.translate.goog\/index.php\/cp-m-80-2\/hitech-c-per-z80\/aritmetica-ieee-p754\/?_x_tr_sl%3Dauto%26_x_tr_tl%3Den%26_x_tr_hl%3Den%26_x_tr_pto%3Dnui%23sdfootnote2anc\">2<\/a>\u00a0Since the shift to the right must be done on three registers (L and DE) we start with an SRL of the L register that shifts the bits one place to the right, puts the LSB in the Carry and a zero in the MSB.\u00a0Then it shifts the bits one place to the right of the D register by copying the Carry to the MSB and then putting the LSB into Carry.\u00a0Finally, the same operation in the E register. The result is a right shift on 24 bits with the carry entering to the left in the DE register and loss of the least significant bit.<\/p>\r\n<p>&nbsp;<\/p>\r\n<p><a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=en&amp;nui=1&amp;u=https:\/\/automatico-freevar-com.translate.goog\/index.php\/cp-m-80-2\/hitech-c-per-z80\/aritmetica-ieee-p754\/?_x_tr_sl%3Dauto%26_x_tr_tl%3Den%26_x_tr_hl%3Den%26_x_tr_pto%3Dnui%23sdfootnote3anc\">3<\/a>\u00a02\u2019s complement: invert the single bits of the binary value and finally add 1 to the LSB.\u00a0For example: 1001 0111 becomes 0110 1000 to which we add 1 obtaining 0110 1001. That is, 158 decimal becomes 104 to which added 1 results in 105.<\/p>\r\n<p>&nbsp;<\/p><div class=\"pvc_clear\"><\/div><p id=\"pvc_stats_76\" class=\"pvc_stats all  \" data-element-id=\"76\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/automatico.freevar.com\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p><div class=\"pvc_clear\"><\/div>","protected":false},"excerpt":{"rendered":"<p>Representation The format for the representation of floating point numbers in computers, in general, is that dictated by the IEEE 754 standard. discrete subset of the real field. The IEEE 754 standard defines a form of representation of the real number: the real number is first divided into the integer part and the fractional part [&hellip;]<\/p>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_76\" class=\"pvc_stats all  \" data-element-id=\"76\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/automatico.freevar.com\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"author":1,"featured_media":0,"parent":54,"menu_order":2,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-76","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/automatico.freevar.com\/index.php\/wp-json\/wp\/v2\/pages\/76"}],"collection":[{"href":"https:\/\/automatico.freevar.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/automatico.freevar.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/automatico.freevar.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/automatico.freevar.com\/index.php\/wp-json\/wp\/v2\/comments?post=76"}],"version-history":[{"count":79,"href":"https:\/\/automatico.freevar.com\/index.php\/wp-json\/wp\/v2\/pages\/76\/revisions"}],"predecessor-version":[{"id":978,"href":"https:\/\/automatico.freevar.com\/index.php\/wp-json\/wp\/v2\/pages\/76\/revisions\/978"}],"up":[{"embeddable":true,"href":"https:\/\/automatico.freevar.com\/index.php\/wp-json\/wp\/v2\/pages\/54"}],"wp:attachment":[{"href":"https:\/\/automatico.freevar.com\/index.php\/wp-json\/wp\/v2\/media?parent=76"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}