(Translated by https://www.hiragana.jp/)
有符號數處理:修订间差异 - 维基百科,自由的百科全书

ゆう符號ふごうすう處理しょりおさむ订间

删除てき内容ないよう 添加てんかてき内容ないよう
しょう →‎top
 
显示27个用户的43个中间版本はんぽん
だい1ぎょう
{{NoteTA
ざい[[计算つくえ运算]]ちゅう,'''ゆう符号ふごうすうてき表示ひょうじ'''需要じゅようはた负数编码为进制形式けいしき
|G1 = IT
}}
ざい[[电子计算つくえ|计算つくえ]]进行[[计算 (计算つくえ科学かがく)|运算]]时,需要じゅようはた负数编码いたり进制形式けいしき所用しょようてき编码方法ほうほうしょう为'''ゆう符号ふごうすうてき表示ひょうじ'''。
 
ざい[[数学すうがく]]ちゅう以在任意にんい基数きすうてきかずざいさい前面ぜんめんうえ“−”ごう“−”らい表示ひょうじ负数しか而在计算[[ずいつくえそんそん储器]][[かたけんよせそん]]ちゅうかずすえひとし无符ごうてきいち系列けいれつ进制形式けいしきくらい表示ひょうじ而没ゆう额外てき标志いん需要じゅよういち种[[编码]][[负号]]てき方法ほうほうとうぜんゆうよん种方ほうよう于扩てん[[二进制数字系统]],らい表示ひょうじ[[ゆう符号ふごうすう]]'''[[はら(sign]]'''({{lang|en|sign-and-magnitude),magnitude}})、'''[[はん码]](ones'''({{lang|en|ones' complement),complement}})、'''[[补码]](two'''({{lang|en|two's complement),complement}})以及'''[[うつり码]]'''({{lang|en|offset binary}},{{lang|en|excess-''N''}})
 
==はら方法ほうほう==
<!-- This section is linked from [[IEEE 754]] -->
{|class="wikitable" style="float:right; width: 20em; margin-left: 1em; text-align:center"
だい9ぎょうだい12ぎょう
|-
!进制
!ゆうごうごう及值
!无符ごう
|-
| 00000000 || +0 || 0
|-
| 00000001 || 1 || 1
|-
| ... || ... || ...
|-
| 01111111 || 127 || 127
|-
| 10000000 || −0 || 128
|-
| 10000001 || −1 || 129
|-
| ... || ... || ...
|-
| 11111111 || −127 || 255
|-
|}'''
{{Main|はら码}}
 
符號ふごう及值(sign & magnitude)てき处理办法分配ぶんぱいいち个符ごう(sign bit)らい表示ひょうじ这个符号ふごう:设置这个[[]](通常つうじょう为[[最高さいこう有效ゆうこう]])为''0''表示ひょうじいち个正すう,为''1''表示ひょうじいち个负すう数字すうじちゅうてき其它指示しじすう值(あるもの[[绝对值]])。よし此一个[[节]]ただゆう7除去じょきょ符号ふごう),かず值的范围从0000000(0)いた1111111(127)。这样とう增加ぞうかいち个符ごうだいはちきさき表示ひょうじ从−127<sub>10</sub>いた+127<sub>10</sub>てき数字すうじ。这种表示法ひょうじほう导致てき结果就是以有两种方式ほうしき表示ひょうじれい,00000000(0)あずか10000000([[-0|−0]]),這大だい增加ぞうか[[すう碼電]]てき複雜ふくざつせい設計せっけいなん。CPUまた執行しっこう兩次りょうじ比較ひかくはかためし運算うんざん結果けっかためれい
 
じゅう进制すう−43ようげん码方ほう编码なり八位的结果为10101011。
了解りょうかい表示ひょうじ一个数字的符号的问题,しゅさきてき处理办法应该分配ぶんぱいいち个'''[[符号ふごう]]'''らい表示ひょうじ这个符号ふごう:设置这个[[]](通常つうじょう为[[最高さいこう有效ゆうこう]])为''0''表示ひょうじいち个正すう,为''1''表示ひょうじいち个负すう数字すうじちゅうてき其它指示しじすう值(あるもの[[绝对值]])。よし此一个[[节]]ただゆう7除去じょきょ符号ふごう),かず值的范围从0000000(0)いた1111111(127)。这样とう增加ぞうかいち个符ごうだいはちきさき表示ひょうじ从&minus;127<sub>10</sub>いた+127<sub>10</sub>てき数字すうじ。这种表示法ひょうじほう导致てき结果就是以有两种方式ほうしき表示ひょうじ0,00000000(0)あずか10000000([[-0|&minus;0]])。じゅう进制すう&minus;43ようげん码方ほう编码なり八位一字节的结果为10101011。
 
这种方法ほうほう直接ちょくせつ较于常用じょうようてき符号ふごう表示法ひょうじほう放置ほうちいち个“+”あるもの“&minus;”“−”ざい数字すうじてきすう值之まえ)。一些早期的二进制电脑(れい如[[IBM 7090]])使用しよう这种表示法ひょうじほう,也许よし于它与通用つうよう用途ようとてき自然しぜん联系。はら码是さい常用じょうようてき表示ひょうじ[[浮てん點數てんすう]]有效ゆうこう数字すうじてき方法ほうほう。[[IEEE 754|IEEE二進位浮點數算術標準]](IEEE 754)採用さいよう最高さいこう有效ゆうこう作為さくい符号ふごういん此可表示ひょうじ正負せいふ[[れい]]及正まけ[[無限むげん]]
{{Clear}}
 
==はん码==
{{Main|はん码}}
{|class="wikitable" style="float:right; width: 20em; margin-left: 1em; text-align:center"
|+ 8はん
だい42ぎょうだい50ぎょう
!无符ごう数表示すうひょうじ
|-
| 00000000 || +0 || 0
|-
| 00000001 || 1 || 1
|-
| ... || ... || ...
|-
| 01111101 || 125 || 125
|-
| 01111110 || 126 || 126
|-
| 01111111 || 127 || 127
|-
| 10000000 || −127 || 128
だい60ぎょうだい68ぎょう
| 10000010 || −125 || 130
|-
| ... || ... || ...
|-
| 11111110 || −1 || 254
|-
| 11111111 || −0 || 255
|}
 
另一方面ほうめんいち种叫做'''はん码'''({{lang|en|ones' complement}})まとけい统也以用于表示ひょうじ负数ちゅう正数せいすう与原よはら码形しきいち样,无需取はんいち个负すうてき进制すうてきはん码形しき在原ありわらすう础上[[其绝对值部分ぶぶん按位はん]],そく对应正数せいすうてき符号ふごう变,其余各位かくい按位はんどうげん表示ひょうじいち样,0てきはん表示ひょうじ形式けいしき也有やゆう两种:01111111(:00000000(+0)あずか11111111([[-0|&minus;0−0]])。
 
れいらい说,00101011(43)如,はら码10101011(-43)てきはん码形しき11010100(&minus;43)11010100(−43)ゆう符号ふごうすうようはん表示ひょうじてき范围为&minus;(2<sup>N&minus;1N−1</sup>&minus;1−1)いた(2<sup>N&minus;1N−1</sup>&minus;1−1),以及+/&minus;0−0传统いち慣常てきはちてきぶし便びん表示ひょうじ为&minus;127)−127<sub>10</sub>いた+127<sub>10</sub>,以及00000000(+0)あるもの11111111(&minus;0)11111111(−0)
 
对两个反码表示ひょうじ形式けいしきてき数字すうじ做加ほうしゅさき需要じゅよう进行つね规的进制加法かほうただし需要じゅようざいてきもと础上じょう[[进位标志|进位]]。下面かめんいち个−1じょう+2てきれい
-{}-
进制 じゅう进制
11111110 -1
+ 00000010 +2
............ ...
1 00000000 0 <-- 错误答案とうあん
1 +1 <-- じょう进位
............ ...
00000001 1 <-- せい确答あん
 
对两个反码表示ひょうじ形式けいしきてき数字すうじ做加ほうしゅさき需要じゅよう进行つね规的进制加法かほうただし需要じゅようざいてきもと础上じょう[[进位标志|进位]]。为什么必须这样呢?らい下面かめん这个&minus;1じょう+2てきれい
<pre style="width:35em;">
进制 じゅう进制
11111110 -1
+ 00000010 +2
............ ...
1 00000000 0 <-- 错误答案とうあん
1 +1 <-- じょう进位
............ ...
00000001 1 <-- せい确答あん
</pre>
ざい上面うわつらてきれい子中こなか,二进制加法仅仅得到了00000000,这是いち个错误的答案とうあんただゆうとうじょう进位时才能さいのういたせい确答あん(00000001)。
 
はん码这种数字すうじ表示ひょうじけい通常つうじょう现在ろうしきてき计算つくえちゅう;[[PDP-1]],[[CDC 160A]],[[UNIVAC 1100/2200系列けいれつ]]以及其它てき一些电脑都使用反码算术。
 
关于[[正字せいじほう]](orthography)てき评述:这个けい统之所以ゆえんしょうさくはん码(ones' complement)いん为一个正值''x''てきはん表示ひょうじ为[[按位]]''x'')也可以通过0てきはん码(ones' complement)表示ひょうじ形式けいしきいち长串てき1,&minus;0)1,−0)减去''x''いた
 
[[Internet]]协议[[IPv4]],[[互联网控せい消息しょうそく协议|ICMP]],[[よう户数すえ报协议|UDP]]以及[[传输ひかえせい协议|TCP]]使用しようどう样的16はん码检验和算法さんぽう。虽然だい多数たすう计算つくえかけすくな[[补的方法ほうほう|“循环进位”]]かたけんただし这种额外てき复杂せい接受せつじゅてきいん为“对于所有しょゆう(bit)位置いちじょうてき错误どう样敏かんてき”。<ref>{{cite web
|url= http://tools.ietf.org/html/rfc1071
|title= Computing the Internet Checksum (RFC 1071)
だい96ぎょうだい104ぎょう
|publisher= The Internet Engineering Task Force
|year= 1988
|archive-date= 2020-10-21
|month= きゅう
|archive-url= https://web.archive.org/web/20201021062735/https://tools.ietf.org/html/rfc1071
|dead-url= no
}}</ref> ざい[[よう户数すえ报协议|UDP]]ちゅうぜん0表示ひょうじ省略しょうりゃくりょう选的检验特性とくせい。另外いち表示ひょうじ:FFFF,指示しじりょう0てき检验。<ref>{{cite web
|url= http://tools.ietf.org/html/rfc768
|title= User Datagram Protocol (RFC 768)
|accessdate= 2009-06-11
だい104ぎょうだい114ぎょう
|first= J.
|year= 1980
|month= はち
|publisher= The Internet Engineering Task Force
|archive-date= 2012-07-22
|archive-url= https://archive.today/20120722/http://tools.ietf.org/html/rfc768
|dead-url= no
}}</ref> (ざいIPv4ちゅう,TCPICMP强制きょうせいせい规定りょう检验,而在IPv6ちゅう以省りゃく)。
 
注意ちゅうい负数てきはん码只需按もとめすう值的补就可以得いた,'''符号ふごう需要じゅよう变动'''。
 
==补码==
だい119ぎょうだい131ぎょう
!无符ごう数表示すうひょうじ
|-
| 00000000 || 0 || 0
|-
| 00000001 || 1 || 1
|-
| ... || ... || ...
|-
| 01111110 || 126 || 126
|-
| 01111111 || 127 || 127
|-
| 10000000 || −128 || 128
だい135ぎょうだい147ぎょう
| 10000010 || −126 || 130
|-
| ... || ... || ...
|-
| 11111110 || −2 || 254
|-
| 11111111 || −1 || 255
|}
{{mainMain|补码補數ほすう}}
 
'''补码'''({{lang|en|two's complement}})回避かいひりょう0ゆう表示ひょうじてき问题以及循环进位てき需要じゅようざい补码表示ひょうじちゅう,负数以位しき表示ひょうじ为正值的はん码加1(とうさく无符ごうすう)。
 
ざい补码表示ひょうじちゅうただゆういち个0(00000000)。もとめいち个数てきいや补码(无论负数还是正数せいすう需要じゅようはん所有しょゆうしかきさき1。一对补码整数相加等价于一对[[无符ごうすう]]あいじょりょう溢出检测,如果のう够做到てき话)。如,从旁边的ひょうかく以看,127あずか&minus;128−128てき补码表示ひょうじしょう就与无符ごうすう127及128そう具有ぐゆうしょうどうてき结果。
 
いたいち正数せいすういた其对应负かずてき补码てき简单方法ほうほう表示ひょうじ如下:
{|class="wikitable"
!
だい161ぎょうだい173ぎょう
|align="center"| '''1010'''100
|}
{{Clear}}
 
==うつり码==
{{clear}}
{{Main|うつり码}}
うつり码({{lang|en|offset binary}}),しょう二进制原码无符号整数所代表的值,减去いち个预设值。
 
标准うつり码,预设值为二进制原码表示的最大整数的一半。 一个数的标准移码和补码,最高さいこう相反あいはん,其余各位かくいひとししょうどう
==引用いんよう==
 
==表示ひょうじ方式ほうしき==
下表かひょうれつりょう 4-bit 進數しんすうしょのう表示ひょうじてき整數せいすう
*符號ふごう(unsigned)表示ひょうじ0いた15
*符號ふごう及值(sign & magnitude)表示ひょうじ-7いた+7,包括ほうかつ-0
*いち碼(ones' complement)表示ひょうじ-7いた+7,包括ほうかつ-0
*碼(two's complement)表示ひょうじ-8いた+7,ぼつゆう[[−0|±0てき問題もんだい]]
 
{| class="wikitable sortable"
|-
! 進數しんすう !! 符號ふごう !! 符號ふごうもと !! いち碼 !!
|-
| 0000 || 0 || 0 || 0 || 0
|-
| 0001 || 1 || 1 || 1 || 1
|-
| 0010 || 2 || 2 || 2 || 2
|-
| 0011 || 3 || 3 || 3 || 3
|-
| 0100 || 4 || 4 || 4 || 4
|-
| 0101 || 5 || 5 || 5 || 5
|-
| 0110 || 6 || 6 || 6 || 6
|-
| 0111 || 7 || 7 || 7 || 7
|-
| 1000 || 8 || -0 || -7 || -8
|-
| 1001 || 9 || -1 || -6 || -7
|-
| 1010 || 10 || -2 || -5 || -6
|-
| 1011 || 11 || -3 || -4 || -5
|-
| 1100 || 12 || -4 || -3 || -4
|-
| 1101 || 13 || -5 || -2 || -3
|-
| 1110 || 14 || -6 || -1 || -2
|-
| 1111 || 15 || -7 || -0 || -1
|}
 
==まいり见==
* [[しんじゅう進數しんすう]]
* [[符号ふごうせい]]
* [[平衡へいこうさん进制]]
 
==参考さんこう资料==
{{reflist}}
 
{{DEFAULTSORT:Y}}
[[Category:计算つくえけい统结构]]
[[Category:计算つくえ体系たいけい结构]]
[[Category:計算けいさん算術さんじゅつ]]
 
[[ca:Complement a u]]
[[cs:Dvojková soustava#Zobrazen.C3.AD_z.C3.A1porn.C3.BDch_.C4.8D.C3.ADsel]]
[[de:Einerkomplement]]
[[en:Signed number representations]]
[[eo:Negativa kaj nenegativa nombroj en komputiko]]
[[es:Complemento a uno]]
[[fi:Komplementti (tietotekniikka)]]
[[fr:Complément à un]]
[[id:Bilangan biner bertanda]]
[[it:Rappresentazione dei numeri relativi]]
[[ja:符号ふごうづけ数値すうち表現ひょうげん]]
[[pt:Complemento para um]]
[[th:การแทนจำนวนที่มีเครื่องหมาย]]
[[vi:Biểu diễn số âm]]