Saf bir matematik geçmişine sahip olmak, ilgilenen herkes için biraz daha matematiksel bir yaklaşımdır.
8 bit imzalı ve imzasız bir tamsayı ile başlarsak, temel olarak toplama ve çarpma söz konusu olduğunda, tamsayı modulo 256 tamsayılarıdır, 2'nin tamamlayıcısı negatif tamsayıları temsil etmek için kullanılması şartıyla (ve her modern işlemcinin yaptığı gibi) .
İşlerin farklı olduğu yerlerde iki yer vardır: biri karşılaştırma işlemidir. Bir anlamda, modulo 256 tam sayıları en iyi bir sayı çemberi olarak kabul edilir (modulo 12 tamsayıları eski moda bir analog saat yüzeyinde yaptığı gibi). Sayısal karşılaştırmaları (x <y) anlamlı kılmak için, hangi sayıların diğerlerinden daha az olduğuna karar vermemiz gerekiyordu. Matematikçinin bakış açısından, modulo 256 tamsayılarını bir şekilde tüm tamsayılar kümesine gömmek istiyoruz. İkili gösterimi tamamen sıfır olan 8 bit tamsayısının 0 tamsayısına eşlenmesi yapılması gereken en açık şeydir. Daha sonra başkalarını eşlemeye devam edebiliriz, böylece '0 + 1' (bir kaydı sıfırlama sonucu, diyelim balta ve 'inc ax' aracılığıyla birer birer artırılır) tamsayı 1'e gider ve bu şekilde devam eder. Aynısını -1 ile yapabiliriz, örneğin '0-1' ile -1 tamsayısını ve '0-1-1' eşleme -2 tamsayısına. Bu yerleştirmenin bir işlev olduğundan emin olmalıyız, bu nedenle tek bir 8 bitlik tamsayıyı iki tamsayı ile eşleştiremeyiz. Bu şekilde, tüm sayıları bir tamsayılar kümesine eşlersek, 0, 0'dan küçük ve 0'dan küçük tamsayılarla birlikte orada olacak demektir. Bunu 8 bit tamsayı ile yapmanın temelde 255 yolu vardır (buna göre 0'dan -255'e kadar istediğiniz minimum değere). Daha sonra '0 <y - x' cinsinden 'x <y' tanımlayabilirsiniz.
Donanım desteğinin mantıklı olduğu iki yaygın kullanım durumu vardır: biri sıfırdan büyük tamsayı 0'dan büyük ve biri yaklaşık 50/50 bölünmüş 0'dır. Diğer tüm olasılıklar, sayıları ekstra bir ve alt 'operasyonlardan önce ve bu ihtiyaç modern yazılımda açık bir örnek düşünemediğimden çok nadirdir (çünkü sadece 16 bit gibi daha büyük bir mantisle çalışabilirsiniz).
Diğer bir konu, 8 bitlik bir tamsayıyı 16 bitlik tamsayılar alanına eşlemektir. -1 -1'e gider mi? 0xFF'in -1'i temsil etmesi isteniyorsa, istediğiniz şey budur. Bu durumda, işaret genişletme yapılması mantıklıdır, böylece 0xFF 0xFFFF'ye gider. Öte yandan, 0xFF 255'i temsil ediyorsa, 0xFFFF yerine 255, dolayısıyla 0x00FF ile eşlenmesini istersiniz.
Bu, 'shift' ve 'aritmetik shift' işlemleri arasındaki farktır.
Bununla birlikte, sonuçta, yazılımdaki int'lerin tamsayılar değil, ikili ifadeler olduğu ve sadece bazılarının temsil edilebileceği gerçeği ortaya çıkmaktadır. Donanım tasarlanırken, donanımda yerel olarak yapılacak seçimler yapılmalıdır. 2'nin tamamlayıcısı ile toplama ve çarpma işlemleri aynı olduğundan, negatif tamsayıları bu şekilde temsil etmek mantıklıdır. O zaman sadece ikili gösterimlerinizin hangi tamsayıları temsil etmesi gerektiğine bağlı olan bir işlem meselesidir.