Sign extension (original) (raw)
符号拡張(ふごうかくちょう、Sign extension)とは、符号付の数値を表現するビット列が格納領域のビット幅より短い場合に、隙間を適切に埋めることによって数値としての同一性を維持する手法である。 例えば、8ビットの (-10)10 という値は2の補数表現では以下のようになる。 11110110 これを16ビットに符号拡張すると以下のようになる。 11111111 11110110 符号拡張しないで16ビットの領域に格納した場合、以下のようになる 00000000 11110110 これを整数として解釈すると (246)10 となってしまい、数値としての同一性が維持されない。 符号拡張にはしばしばマイクロプロセッサやコンパイラのバグが隠れていることがある。
Property | Value |
---|---|
dbo:abstract | Στην , η επέκταση προσήμου (αγγλικά: sign extension) είναι η αύξηση του αριθμού των bit ενός δυαδικού αριθμού, με ταυτόχρονη διατήρηση του προσήμου (θετικού ή αρνητικού) και του του. Αυτό επιτυγχάνεται προσθέτοντας ψηφία από την περισσότερο σημαντική πλευρά του αριθμού ακολουθώντας μία διαδικασία, η οποία εξαρτάται από την συγκεκριμένη αναπαράσταση (συμπληρώματος ως προς 1, συμπληρώματος ως προς 2) του αριθμού που χρησιμοποιείται. Στο σημείο αυτό υπενθυμίζεται ότι στους προσημασμένους δυαδικούς αριθμούς, το παίζει το ρόλο του προσήμου. Εάν είναι 0 ο αριθμός είναι θετικός (0="+"), εάν είναι 1 ο αριθμός είναι αρνητικός (1="-"). Για παράδειγμα, εάν σε μία περίπτωση χρησιμοποιούνται 6 bit για την αναπαράσταση ενός αριθμού "00 1010" (+10, στο δεκαδικό σύστημα αρίθμησης) και το μήκος λέξης αυξηθεί στα δεκαέξι bit, κάνοντας επέκταση προσήμου, η νέα αναπαράσταση του αριθμού θα είναι "0000 0000 0000 1010". Με αυτόν τον τρόπο τόσο το πρόσημο όσο και το μέτρο του αριθμού διατηρούνται. Εάν χρησιμοποιηθούν 10 bit για να παρασταθεί ο αριθμός -15 σε μορφή συμπληρώματος ως προς δύο, η αναπαράσταση θα είναι "11 1111 0001". Έτσι με την επέκταση προσήμου, για να αυξηθεί το μήκος λέξης του αριθμού στα 16 bit, επεκτείνεται το πρόσημο, εδώ το 1, από την πλευρά των περισσότερο σημαντικών bit (από αριστερά) προσθέτοντας 1, μέχρι να συμπληρωθεί ο αριθμός των 16 bit. Έτσι η νέα αναπαράσταση του αριθμού είναι "1111 1111 1111 0001", ενώ ταυτόχρονα διατηρείται το πρόσημο και το μέτρο του. (el) La extensión de signo es la operación, dentro de la aritmética de computadoras, en la cual se incrementa la cantidad de bits de un número preservando el signo y el valor del número original.Es llevada a cabo mediante agregación de dígitos del lado más significativo del número, siguiendo ciertos procedimientos dependiendo de la representación particular utilizada. Por ejemplo, si se usan 6 bits para representar al número "00 1010" (diez positivo en decimal) y la operación de extensión de signo extiende el tamaño de la palabra a 16 bits, entonces la nueva representación es simplemente "0000 0000 0000 1010". De este modo, ambos, signo y módulo, se mantienen iguales con respecto al valor original. Si diez bits son utilizados para representar al número "11 1111 0001" (quince negativo en decimal) utilizando complemento a dos, y se extiende el signo hasta dieciséis bits, la nueva representación sería "1111 1111 1111 0001". De este modo, rellenando el lado más significativo con unos, el signo y módulo se mantienen iguales con respecto al valor original. En el conjunto de instrucciones de Intel x86, por ejemplo, existen dos maneras de realizar la extensión de signo: * Usando las instrucciones cbw, cwd, cwde, y cdq: convierten byte a palabra, palabra a doble palabra, palabra a doble palabra extendida y palabra doble a cuádruple palabra respectivamente (en el contexto del x86, un byte equivalen a 8 bits, una palabra a 16 bits, doble palabra y doble palabra extendida a 32 bits y cuádruple palabra a 64 bits); * Usando uno de los movimientos de extensión de signo, facilitados por la familia de instrucciones movsx (mover con extensión de signo). (es) Sign extension (abbreviated as sext) is the operation, in computer arithmetic, of increasing the number of bits of a binary number while preserving the number's sign (positive/negative) and value. This is done by appending digits to the most significant side of the number, following a procedure dependent on the particular signed number representation used. For example, if six bits are used to represent the number "00 1010" (decimal positive 10) and the sign extend operation increases the word length to 16 bits, then the new representation is simply "0000 0000 0000 1010". Thus, both the value and the fact that the value was positive are maintained. If ten bits are used to represent the value "11 1111 0001" (decimal negative 15) using two's complement, and this is sign extended to 16 bits, the new representation is "1111 1111 1111 0001". Thus, by padding the left side with ones, the negative sign and the value of the original number are maintained. In the Intel x86 instruction set, for example, there are two ways of doing sign extension: * using the instructions cbw, cwd, cwde, and cdq: convert byte to word, word to doubleword, word to extended doubleword, and doubleword to quadword, respectively (in the x86 context a byte has 8 bits, a word 16 bits, a doubleword and extended doubleword 32 bits, and a quadword 64 bits); * using one of the sign extended moves, accomplished by the movsx ("move with sign extension") family of instructions. (en) 符号拡張(ふごうかくちょう、Sign extension)とは、符号付の数値を表現するビット列が格納領域のビット幅より短い場合に、隙間を適切に埋めることによって数値としての同一性を維持する手法である。 例えば、8ビットの (-10)10 という値は2の補数表現では以下のようになる。 11110110 これを16ビットに符号拡張すると以下のようになる。 11111111 11110110 符号拡張しないで16ビットの領域に格納した場合、以下のようになる 00000000 11110110 これを整数として解釈すると (246)10 となってしまい、数値としての同一性が維持されない。 符号拡張にはしばしばマイクロプロセッサやコンパイラのバグが隠れていることがある。 (ja) Rozszerzenie znaku – w arytmetyce komputerowej operacja zwiększenia liczby bitów liczby binarnej przy jednoczesnym zachowaniu znaku tej liczby i jej wartości. Odbywa się to poprzez dołączanie cyfr binarnych na lewo od najbardziej znaczącego bitu. Na przykład, jeśli sześć bitów jest używanych do przedstawienia liczby „00 1010” (w systemie dziesiętnym dodatnia liczba 10), a operacja przedłużenia znaku zwiększa długość słowa do 16 bitów, wówczas nowa reprezentacja tej liczby w słowie 16-bitowym to „0000 0000 0000 1010”. Wyraźnie widać, że zarówno wartość, jak i znak liczby są takie same jak przed operacją. Jeśli dziesięć bitów jest używanych do przedstawienia wartości „11 1111 0001” (−15 w systemie dziesiętnym) przy użyciu kodu uzupełnień do dwóch, a znak jest rozszerzany tak, aby słowo miało długość 16 bitów. Nowa reprezentacja tej liczby to „1111 1111 1111 0001”. W ten sposób, wypełniając lewą stronę cyfrą „1”, zarówno znak ujemny, jak i wartość oryginalnej liczby są zachowywane. (pl) 符号扩充(又名符号扩展)是计算机算术中,在保留数字的符号(正负性)及数值的情况下,增加二进制数字位数的操作。此操作根据使用的特定有符號數處理方式,通过在数字的最高有效位端添加位数的方式完成。 举个例子,若计算机使用六位二进制数表示数字“00 1010”(十进制的正10),且此数字需要将字长符号扩充至十六位,则扩充后的值为“0000 0000 0000 1010”。此时,数值与符号均保留了下来。 若计算机使用十位数及二補數表示数字“11 1111 0001”(十进制的负15),且此值需要扩充至十六位,则扩充后的值为“1111 1111 1111 0001”。 此时,负号及原数字数值通过将左侧填充为1的方式保留了下来。 在英特尔的中,符号扩充有两种方式: * 使用指令cbw、cwd、cwde及cdq:分别将字节转化为字、字转化为双字、字转化为扩充双字、双字转化为四倍长字(x86环境中,一个字节为8位、一个字16位、双字与扩充双字均为32位、四倍长字64位); * 使用符号扩展移动指令,可通过movsx(“带符号移动”)指令族完成。 (zh) |
dbo:wikiPageID | 3349272 (xsd:integer) |
dbo:wikiPageInterLanguageLink | dbpedia-de:Zweierkomplement dbpedia-ru:Дополнительный_код_(представление_числа) |
dbo:wikiPageLength | 3274 (xsd:nonNegativeInteger) |
dbo:wikiPageRevisionID | 1123247922 (xsd:integer) |
dbo:wikiPageWikiLink | dbr:Most_significant_bit dbr:Arithmetic_shift dbr:Sign_(mathematics) dbr:Two's_complement dbr:Logical_shift dbc:Binary_arithmetic dbr:Binary_number dbr:Bit dbr:Intel dbr:X86 dbr:X86_instruction_listings dbr:Computer_arithmetic dbr:Word_(data_type) dbr:Signed_number_representation |
dbp:wikiPageUsesTemplate | dbt:Efn dbt:ISBN dbt:Notelist |
dct:subject | dbc:Binary_arithmetic |
gold:hypernym | dbr:Operation |
rdf:type | yago:Artifact100021939 yago:Instrumentality103575240 yago:Object100002684 yago:PhysicalEntity100001930 dbo:MilitaryConflict yago:System104377057 yago:Whole100003553 yago:WikicatPositionalNumeralSystems |
rdfs:comment | 符号拡張(ふごうかくちょう、Sign extension)とは、符号付の数値を表現するビット列が格納領域のビット幅より短い場合に、隙間を適切に埋めることによって数値としての同一性を維持する手法である。 例えば、8ビットの (-10)10 という値は2の補数表現では以下のようになる。 11110110 これを16ビットに符号拡張すると以下のようになる。 11111111 11110110 符号拡張しないで16ビットの領域に格納した場合、以下のようになる 00000000 11110110 これを整数として解釈すると (246)10 となってしまい、数値としての同一性が維持されない。 符号拡張にはしばしばマイクロプロセッサやコンパイラのバグが隠れていることがある。 (ja) 符号扩充(又名符号扩展)是计算机算术中,在保留数字的符号(正负性)及数值的情况下,增加二进制数字位数的操作。此操作根据使用的特定有符號數處理方式,通过在数字的最高有效位端添加位数的方式完成。 举个例子,若计算机使用六位二进制数表示数字“00 1010”(十进制的正10),且此数字需要将字长符号扩充至十六位,则扩充后的值为“0000 0000 0000 1010”。此时,数值与符号均保留了下来。 若计算机使用十位数及二補數表示数字“11 1111 0001”(十进制的负15),且此值需要扩充至十六位,则扩充后的值为“1111 1111 1111 0001”。 此时,负号及原数字数值通过将左侧填充为1的方式保留了下来。 在英特尔的中,符号扩充有两种方式: * 使用指令cbw、cwd、cwde及cdq:分别将字节转化为字、字转化为双字、字转化为扩充双字、双字转化为四倍长字(x86环境中,一个字节为8位、一个字16位、双字与扩充双字均为32位、四倍长字64位); * 使用符号扩展移动指令,可通过movsx(“带符号移动”)指令族完成。 (zh) Στην , η επέκταση προσήμου (αγγλικά: sign extension) είναι η αύξηση του αριθμού των bit ενός δυαδικού αριθμού, με ταυτόχρονη διατήρηση του προσήμου (θετικού ή αρνητικού) και του του. Αυτό επιτυγχάνεται προσθέτοντας ψηφία από την περισσότερο σημαντική πλευρά του αριθμού ακολουθώντας μία διαδικασία, η οποία εξαρτάται από την συγκεκριμένη αναπαράσταση (συμπληρώματος ως προς 1, συμπληρώματος ως προς 2) του αριθμού που χρησιμοποιείται. Στο σημείο αυτό υπενθυμίζεται ότι στους προσημασμένους δυαδικούς αριθμούς, το παίζει το ρόλο του προσήμου. Εάν είναι 0 ο αριθμός είναι θετικός (0="+"), εάν είναι 1 ο αριθμός είναι αρνητικός (1="-"). (el) La extensión de signo es la operación, dentro de la aritmética de computadoras, en la cual se incrementa la cantidad de bits de un número preservando el signo y el valor del número original.Es llevada a cabo mediante agregación de dígitos del lado más significativo del número, siguiendo ciertos procedimientos dependiendo de la representación particular utilizada. En el conjunto de instrucciones de Intel x86, por ejemplo, existen dos maneras de realizar la extensión de signo: (es) Sign extension (abbreviated as sext) is the operation, in computer arithmetic, of increasing the number of bits of a binary number while preserving the number's sign (positive/negative) and value. This is done by appending digits to the most significant side of the number, following a procedure dependent on the particular signed number representation used. In the Intel x86 instruction set, for example, there are two ways of doing sign extension: (en) Rozszerzenie znaku – w arytmetyce komputerowej operacja zwiększenia liczby bitów liczby binarnej przy jednoczesnym zachowaniu znaku tej liczby i jej wartości. Odbywa się to poprzez dołączanie cyfr binarnych na lewo od najbardziej znaczącego bitu. (pl) |
rdfs:label | Επέκταση προσήμου (el) Extensión de signo (es) 符号拡張 (ja) Rozszerzenie znaku liczby binarnej (pl) Sign extension (en) 符号扩充 (zh) |
owl:sameAs | freebase:Sign extension yago-res:Sign extension wikidata:Sign extension dbpedia-el:Sign extension dbpedia-es:Sign extension dbpedia-ja:Sign extension dbpedia-pl:Sign extension dbpedia-tr:Sign extension dbpedia-zh:Sign extension https://global.dbpedia.org/id/32GGj |
prov:wasDerivedFrom | wikipedia-en:Sign_extension?oldid=1123247922&ns=0 |
foaf:isPrimaryTopicOf | wikipedia-en:Sign_extension |
is dbo:wikiPageRedirects of | dbr:Zero_extension dbr:Zext dbr:Sign-extend dbr:Sign-extended dbr:Sign-extension dbr:Sign_propagation |
is dbo:wikiPageWikiLink of | dbr:Comparison_of_C_Sharp_and_Java dbr:LEB128 dbr:Arithmetic_shift dbr:Zero_extension dbr:Zext dbr:Java_virtual_machine dbr:Automatic_vectorization dbr:RISC-V dbr:X86-64 dbr:Memory_management_unit dbr:Sign_bit dbr:Variable-length_quantity dbr:Sign-extend dbr:Sign-extended dbr:Sign-extension dbr:Sign_propagation |
is foaf:primaryTopic of | wikipedia-en:Sign_extension |