Articles of bit

Opérateurs de décalage binary sur les types signés

J’essaie de comprendre le comportement des opérateurs au niveau des bits sur les types signés et non signés. Conformément au document ISO / CEI, voici ce que je comprends. Opérateur de quart gauche Le résultat de E1 << E2 , est E1 positions de bit E2 décalées à gauche Les bits vacants sur le compte […]

Pourquoi les compilateurs C spécifient-ils long 32 bits et long 64 bits?

N’aurait-il pas été plus logique de faire du 64 bits et de réserver longtemps jusqu’à ce que les nombres 128 bits deviennent une réalité?

Est-ce que bit shift promeut automatiquement les caractères en int?

J’ai lu quelque part que le décalage au niveau du bit transforme automatiquement l’opérande en un int. Mais je ne suis pas sûr si cette déclaration devrait être qualifiée de “si les opérandes sont de type différent”. char one = 1, bitsInType = 8; one << (bitsInType – one); Le résultat par défaut de la […]

C – Nécessité de comparer les n bits les plus bas d’un int pour égalité

C – Nécessité de comparer n bits les plus bas d’un int pour égalité. Ie n = 4; xxxx1001 == xxxx1001 (x est indifférent) Ie n = 2; xxxxxx01 == xxxxxx01 Je ne peux pas penser à un bon moyen de le faire sans utiliser de masques, =).

Quel est l’impact des bits sur les décalages au niveau du bit et le fichier IO en C?

Soit L et B deux machines. L ordonne ses bits de LSB (bit le moins significatif) à MSB (bit le plus significatif) tandis que la commande B passe de MSB à LSB. Ou, en d’autres termes, L utilise Little Endian tandis que B utilise le bit Big Endian – à ne pas confondre avec l’ordre […]

Opérateur de décalage gauche

Si j’ai ce qui suit: char v = 32; // 0010 0000 alors je fais: v << 2 le nombre est devenu négatif. // 1000 0000 -128 J’ai lu le standard mais il est seulement écrit: Si E1 a un type signé et une valeur non négative et que E1 × 2, E2 est représentable […]

extension de signe en C

Je cherche ici pour comprendre l’extension de signe: http://www.shrubbery.net/solaris9ab/SUNWdev/SOL64TRANS/p8.html struct foo { unsigned int base:19, rehash:13; }; main(int argc, char *argv[]) { struct foo a; unsigned long addr; a.base = 0x40000; addr = a.base << 13; /* Sign extension here! */ printf("addr 0x%lx\n", addr); addr = (unsigned int)(a.base << 13); /* No sign extension here! […]

Comparaison de séquences de bits arbitraires dans un tableau d’octets en c

J’ai un couple de tableaux uint8_t dans mon code c, et je voudrais comparer une séquence de bits arbitraires d’un à un. Ainsi, par exemple, j’ai bitarray_1 et bitarray_2 et j’aimerais comparer les bits 13 à 47 de bitarray_1 aux bits 5-39 de bitarray_2. Quel est le moyen le plus efficace de le faire? À […]

Décalage binary en C

J’ai un code C qui me confond: int a = 1; int b = 32; printf(“%d\n %d\n”, a<<b, 1<<32); La sortie est 1 0 Le code a été exécuté sur Ubuntu 16.04 (Xenial Xerus) et je l’ai compilé avec gcc -m32 ac avec GCC version 5.4.0. J’ai lu des articles qui expliquent pourquoi a<<b 1, […]

Comment les données sont-elles stockées au niveau du bit en fonction de «Endianness»?

J’ai lu sur Endianness et compris squat … alors j’ai écrit ça main() { int k = 0xA5B9BF9F; BYTE *b = (BYTE*)&k; //value at *b is 9f b++; //value at *b is BF b++; //value at *b is B9 b++; //value at *b is A5 } k était égal à A5 B9 BF 9F et […]