2¹⁶-1 & 2⁵ = 2⁵ (ou? Évidemment?)
Un développeur m'a demandé aujourd'hui ce qu'est 65535 & 32 au niveau du bit, c'est-à-dire 2¹⁶-1 & 2⁵ =? J'ai pensé au début spontanément 32 mais cela m'a semblé facile après quoi j'ai réfléchi pendant plusieurs minutes puis j'ai répondu 32. 32 semble avoir été la bonne réponse mais comment? 65535 = 2¹⁶-1 = 1111111111111111 (mais cela ne semble pas correct puisque ce nombre binaire tout doit être -1 (?)), 32 = 100000 mais je n'ai pas pu le convertir dans ma tête, après quoi j'ai de toute façon répondu 32 depuis que j'avais pour répondre à quelque chose. La réponse 32 est-elle en fait triviale? Est-ce de la même manière 2¹⁶-1 & 2⁵-1 = 31? Pourquoi le développeur m'a-t-il demandé exactement 65535?
Binaire, ce qu'on m'a demandé d'évaluer était 1111111111111111 et 100000, mais je ne comprends pas pourquoi 1111111111111111 n'est pas -1. Cela ne devrait-il pas être -1? 65535 est-il un nombre qui donne un débordement et comment le savoir?