当前位置: 首页 > 知识库问答 >
问题:

32位整数的二进制表示

葛深
2023-03-14

我在c编程方面是个新手,我正试图弄清楚更多关于位的知识,二进制E.c.T

例如,我有三个二进制int变量m1=255或11111111;m2=255或11111111(二进制),m3=255或11111111(二进制),m4=0或00000000(二进制)。我试图把所有的主题放在一起到单一的int变量temp。类似于(11111111 11111111 1111111100000000)这里是我的一段代码:

int x1;  
unsigned char x2;  
unsigned char x3;
unsigned char x4;
int temp;
        x1 = x1|m1;
        printf("x1:%d\n", x1);
        x2 = x2|m2;
        printf("x2:%d\n", x2);
        temp = x1<<8;
        printf("temp:%d\n", temp);
        temp = temp|x2;
        printf("temp:%d\n", temp);
        x3 = x3|m3;
        printf("x3:%d\n", x3);
        temp = temp<<8;
        printf("temp:%d\n", temp);
        temp = temp|x3;
        printf("temp:%d\n", temp);
        x4 = x4|m4;
        printf("x4:%d\n", x4);
        temp = temp<<8;
        printf("temp:%d\n", x1);
        temp = temp|x4;
        printf("%d\n", temp);

X2:255

温度:65280

温度:65535

一切都很好,直到温度变成-256,我不知道为什么。我很感激你的帮助!谢谢!

共有1个答案

吴均
2023-03-14

您使用的是%d格式,它将变量视为有符号整数,您需要使用%u并将变量类型更改为无符号。

unsigned char x1;
unsigned int temp;
 类似资料:
  • 问题内容: 这可能很基本,但是要让我节省一个小时左右的痛苦,谁能告诉我如何计算出表示Java中给定正整数所需的位数? 例如,我得到一个十进制的11(1011)。我需要得到答案,4。 我想出了如何将除最高有效位以外的所有位都设置为0,然后>>>的方法,我得到了答案。但是,我不能。 问题答案: 好吧,您可以算一下在左移为零之前向右移位的次数:

  • 问题内容: 请帮我了解负整数的二进制表示形式。 例如,我们有5。5的二进制表示是。 而且据我了解,-5的二进制表示应该像。 但是输出是。 我有2个问题: 1)为什么这里有这么多位。 2)我真正无法理解的是最后3位。看起来像。即使是+1或-1这将是或 谢谢 问题答案: 您对这些负数应该是什么样的理解是有缺陷的。Java对负数使用二进制补码,而基本规则是取正数,将所有位取反然后加1。那给你带来负面影响

  • 问题内容: 我想使用二进制补码表示一位负整数。使用标准的Python位表示实用程序并没有多大帮助: 的补码形式为。我该怎么做呢? 问题答案: Python的整数已经使用二进制补码,但是由于它们具有任意精度,因此负数的二进制表示形式在开始时将具有一个无限的1s字符串,就像正数具有一个无限的0s字符串一样。由于显然无法显示,因此用负号代替。 如果您想要特定宽度的二进制表示形式,则可以使用模数。

  • 本文向大家介绍python实现整数的二进制循环移位,包括了python实现整数的二进制循环移位的使用技巧和注意事项,需要的朋友参考一下 题目:如何在python中实现整数的二进制循环移位? 概述 在python中,可以通过<<以及>>运算符实现二进制的左移位以及右移位,然而并没有实现循环移位的运算符,暂时也找不到可以实现循环移位的函数,所以在本文中,主要介绍了如何使用字符的切片运算实现循环位移。

  • 问题内容: 我有一个二进制数组,我想将其转换为整数列表,其中每个int是该数组的一行。 例如: 我想转换成。 问题答案: 我曾经在这里问过类似的问题。这是我的回答,适合您的问题:

  • 问题内容: 我知道用和 将小数转换为二进制(在这里我取32位结果的低16位)。 我想做的是另一种方法,并采用16位二进制补码二进制字符串并将其转换为十进制。 即 而不是 我该怎么做? 问题答案: 您需要将结果读取到中。 此打印。