Кіріспе
Санның белгісі мен мәнін сақтай отырып, санның бит санын арттыру операциясы – компьютерлік арифметикадағы санның белгісін (оң/теріс) және мәнін сақтай отырып, екілік санның бит санын арттыру операциясы (кейде секст деп қысқартылады, әсіресе мнемоникада). Бұл, қолданылатын нақты қол қойылған сандық бейнелеуге байланысты, санның ең маңызды жағына цифрларды қосу арқылы жасалады. Мысалы, "00 1010" (ондық оң 10) санын бейнелеу үшін алты бит қолданылса және белгіні кеңейту операциясы сөздің ұзындығын 16 битке дейін ұлғайтса, жаңа бейнелеу жай ғана "0000 0000 0000 1010" болады. Осылайша, мән және мәннің оң екендігі сақталады. Егер "11 1111 0001" (ондық минус 15) мәнін екілік толықтыруды пайдалана отырып, он битпен көрсетуге болса және бұл белгі 16 битке дейін кеңейтілсе, жаңа бейнелеу "1111 1111 1111 0001" болады. Сол жағында 1 санымен толтыру арқылы теріс белгісі мен бастапқы санның мәні сақталады. Intel x86 нұсқаулар жиынтығында, мысалы, белгіні кеңейтудің екі жолы бар: cbw, cwd, cwde және cdq нұсқауларын қолдану: байтты сөзге, сөзді қос сөзге, сөзді кеңейтілген қос сөзге және қос сөзді төрт сөзге айналдыру (x86 контекстінде байт 8 бит, сөз 16 бит, қос сөз және кеңейтілген қос сөз 32 бит, ал төрт сөз 64 бит); белгісі кеңейтілген жылжудың бірін қолдану, бұл movsx ("белгісімен жылжу") нұсқаулар тобымен орындалады.
Sign extension (sometimes abbreviated as sext, particularly in mnemonics) 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.
Нөлдік кеңейту
Осыған ұқсас түсінік – нөлдік кеңейту (кейде zext деп қысқартылады). Көшіру немесе түрлендіру операциясында нөлдік кеңейту – көздің ең маңызды битінің көшірмесін қоймай, мақсаттың жоғары биттерін нөлге орнатуды білдіреді. Егер операцияның көзі қолтаңбасыз сан болса, онда сандық мәнін сақтап, оны үлкенге ауыстыру үшін нөлдік кеңейту әдетте дұрыс тәсіл болып табылады, ал қолтаңбалы сандар үшін белгі кеңейту дұрыс. x86 және x64 командалар жиынтығында movzx командасы ("нөлдік кеңейтумен көшіру") осы функцияны орындайды. Мысалы, movzx ebx, al al тізілімінен ebx тізілімінің кіші байтына байтты көшіреді, содан кейін ebx тізілімінің қалған байттарын нөлдермен толтырады. x64 жүйесінде, жалпы мақсаттағы тізілімдердің төменгі 32 битіне жазатын көптеген командалар мақсат тізілімінің жоғарғы жартысын нөлдейді. Мысалы, mov eax, 1234 командасы rax тізілімінің жоғарғы 32 битін тазартады.