如题所述
ãã10000000-00000001=10000000+11111111=011111111 ,ç»æ为01111111,èä¸æè¿ä½,表示æ溢åº,æé«ä¸ºå¿ é¡»åä¸è¿ç®,å 为æºå¨æ¯ä¸ç¥éæ¯å¦åç è¿æ¯è¡¥ç ,è¿ä¹å°±æ¯æåæ³åæå æ³çæ¹æ³.128å·²ç»è¶ åºä¸ä¸ªåèçæ符å·æ´æ°ç表示èå´äº,-128为10000000,æ£æ°åªè½å°127.
ãã计ç®æºåªè½è¯å«0å1,使ç¨çæ¯äºè¿å¶ï¼èå¨æ¥å¸¸çæ´»ä¸äººä»¬ä½¿ç¨çæ¯åè¿å¶ï¼"æ£å¦äºé士å¤å¾·æ©å°±æåºçé£æ ·ï¼ä»å¤©åè¿å¶ç广æ³éç¨ï¼åªä¸è¿æ¯æ们ç»å¤§å¤æ°äººçæ¥å ·æ10个ææ头è¿ä¸ªè§£åå¦äºå®çç»æã尽管å¨åå²ä¸ææ计æ°(5,10è¿å¶)çå®è·µè¦æ¯äºæä¸è¿å¶è®¡æ°åºç°çæã".为äºè½æ¹ä¾¿çä¸äºè¿å¶è½¬æ¢ï¼å°±ä½¿ç¨äºåå è¿å¶(2 4)åå «è¿å¶1.æ°å¼ææ£è´ä¹åï¼è®¡ç®æºå°±ç¨ä¸ä¸ªæ°çæé«ä½åæ¾ç¬¦å·(0为æ£ï¼1为è´).è¿å°±æ¯æºå¨æ°çåç äºã
ãã
这个数的真值是 -2^7
源码的表示范围是 -(2^7 - 1)到 2^7 - 1
补码的表示范围是 -2^7 到 2^7 - 1
补码要多出一个数,而这个数就是你问的10000000
在源码里面00000000和100000000都是表示0
这样比较浪费,在补码里面,就把100000000当做
-2^7 ,以扩大补码表示范围
希望我的回答对你有所帮助本回答被提问者采纳
二进制补码10000000的源码是多少?
这是一个无解的难题。
按照“取反加一”的说法,每个补码,都有一个对应的原码。
但是,就有这样一种情况:
-128 具有八位的补码,却没有原码和反码。
取反加一!
可是,拿什么取反加一呢?
鼓吹“取反加一”的小伙伴,你有什么好办法呀?
-----------------------
其实,补码的来源,和原码反码符号位,是毫无关系的。
计算机所使用的补码,是由“数值”推导出来的。
补码,有自己定义式。如下:
当 X >= 0, [ X ]补 = X; 零和正数不用变换。
当 X < 0, [ X ]补 = X + 2^n。 n 是补码的位数。
这公式,是通用的。 你去翻翻书,应该能找到这公式。
---------------------
那么,[-128]补 = -128 + 2^8 = 1000 0000 (二进制)。
所以,补码 1000 0000,它代表的数值,就是-128。
而-128 的八位原码和反码,都是不存在的。你就别想了。