标签: bits

解决这么多内存需要多少位?

我正在学习编程基础课程,目前我正在谈论有关计算机组织和位操作的章节 - CPU(ALU,CU,寄存器等)如何工作.

我对二进制语言有相当好的理解.我理解符号/幅度格式/ 1的补码,2的补码等.

在书中我已经知道半字节= 4位,8位= 1字节接下来是一个字 - 通常是组:8位,16位,32位或64位(依此类推),所有这些使得对我来说完美无缺.这是我的作业问题,这让我很困惑:

"一台计算机有64 MB的内存,每个字是4个字节.需要多少位来处理内存中的每个字?"

好吧,我现在很困惑.这本书告诉我一个字通常是8的倍数.但我知道1字节= 8位,所以因为有4个字节和1个字节= 8个字节,认为4个字节x 8位是否正确= 32位?这是答案吗?

byte bits

2
推荐指数
1
解决办法
3万
查看次数

bitParity - 查找整数中的奇数位数

我必须创建一个bitParity(int x)取整数的函数,1如果0在位形式中有奇数个,则返回x,0否则返回.

例如: bitParity(5) = 0, bitParity(7) = 1

但是,这很难,因为我只能在这个问题上使用位运算符(! ˜ & ˆ | + << >>是唯一合法的).这意味着,没有循环,if-then或任何类型的东西.可以使用常量.

到目前为止,我有什么不行的,但我想,我应该整数的位移位16,8以及4时间和XOR剩余的整数.

有人可以提供一些建议吗?谢谢.

c logic integer bits

2
推荐指数
2
解决办法
1万
查看次数

我可以访问TBits内部位图吗?

特别是,我想预设所需的大小,从外部源获取位图,然后以优雅的面向对象的方式处理数据.

我猜是什么

  1. TBits不仅仅是一个直接的布尔和
  2. 内部存储是连续的.

我有这样的假设吗?

delphi bits

2
推荐指数
1
解决办法
471
查看次数

用C中的按位运算符分隔字节中的Nybbles

如果我们有一个十进制值:123
及其二进制版本:01111011

如何从该字节中将最左边的四个和最右边的四个位变为两个独立的int变量?

我的意思是:

int a = 7;  // 0111 (the first four bits from the left)
int b = 11; // 1011 (the first four bits from the right)
Run Code Online (Sandbox Code Playgroud)

非常感激!

c bits bit-manipulation

2
推荐指数
1
解决办法
2500
查看次数

打印空指针的位

如果我创建一个空指针,并将一段内存分配给该空指针,我如何打印出我刚刚分配的各个位?

例如:

void * p;
p = malloc(24);
printf("0x%x\n", (int *)p);
Run Code Online (Sandbox Code Playgroud)

我想上面打印我刚刚分配的 24 位。

c bits void-pointers

2
推荐指数
1
解决办法
4063
查看次数

Verilog为什么是[NumberOfBits-1:0],它实际上在做什么

我正在尝试学习Verilog,但在示例中,我正在研究使用[NumberOfBits-1:0]命令,但我无法完全弄清它为什么存在以及它在做什么。这是我的代码:

module verilogmodule(Minuend,Subtrahend,SumDiff,CarryOut,Mode);
//4-bit adder and subtractor. Mode=0 to add and Mode = 1 to subtract
parameter NumberOfBits = 4;
input [NumberOfBits-1:0] Minuend, Subtrahend; input Mode;
output [NumberOfBits-1:0] SumDiff; output CarryOut;

wire [NumberOfBits-1:0] InverterOut;
wire [NumberOfBits-1:0] MuxOut;
wire [NumberOfBits-1:0] AdderLowCarryout;

//module not4bits(A3,A2,A1,A0,Y3,Y2,Y1,Y0);
not4bits U1 (Subtrahend[3], Subtrahend[2], Subtrahend[1], Subtrahend[0],InverterOut[3], InverterOut[2], InverterOut[1],InverterOut[0]);
 //module mux4bits(A,B,Y,choice);
 mux4bits U2(Subtrahend,InverterOut,MuxOut,Mode);
 //module adder2bits(A,B,Cin, Sum, Cout);
adder2bits AdderLow(Minuend[1:0],MuxOut[1:0],Mode,SumDiff[1:0],AdderLowCarryout[1:0]);
adder2bits AdderHigh(Minuend[3:2],MuxOut[3:2],AdderLowCarryout[1:0],SumDiff[3:2],CarryOut);


endmodule
Run Code Online (Sandbox Code Playgroud)

bits verilog

2
推荐指数
1
解决办法
3111
查看次数

C/C++检查是否在unsigned int中设置了第31位

我正在尝试检查并查看是否在unsigned int中设置了一个位.我不知道我怎么做到这一点,但我认为它会是这样的.我正在尝试用C++编写cdq指令(但是一个函数)

这就是我所拥有的

unsigned int cdq(unsigned int eax)
{
     unsigned int edx = 0;

     if( (eax >> 31) & 1 ) { edx = 0xFFFFFFFF; }
     return edx
}
Run Code Online (Sandbox Code Playgroud)

当我使用具有以下值的函数时:

cdq(0x12345678)第31位设置为(1)所以它应该返回(unsigned int)-1 cdq(0x01)bit 31没有设置(0)所以它应该返回0

问题是它总是返回0,我不知道为什么

c c++ bits

2
推荐指数
1
解决办法
1427
查看次数

C改变了一点uint32_t无法正常工作

我有

uint32_t bits = 0;

bits |= 1<< 31;
bits |= 1<< 15;
bits |= 1<< 14;
bits |= 1<< 13;
Run Code Online (Sandbox Code Playgroud)

这给了我10000000000000001110000000000000

而在我做的另一个功能*(bits) |= 0 << 15;但它没有做任何事情,它应该将第16个1更改为0,所以以下应该来:10000000000000000110000000000000

任何帮助?

c bits sign uint32-t

2
推荐指数
1
解决办法
430
查看次数

找到最右边的位

我坚持这个问题.谢谢你的协助.

你有两个整数,n和m.找到它们在二进制表示中不同的最右边位的位置(保证这样的位存在),从右到左计数.

返回2position_of_the_found_bit(从0开始)的值.

对于n = 11和m = 13,输出应该是不同的最右边比特(n,m)= 2.

11(下标10)= 1011(下标2),13(下标)10 = 1101(下标2),它们不同的最右位是二进制表示中右起第1位(0基)的位.所以答案是2到1次幂= 2.

bits xor bit

2
推荐指数
1
解决办法
2198
查看次数

3位如何存储8个值?

我正在学习自己的编程.和任何(好的)学生一样,我遇到了障碍.

首先,我继续阅读-值的位可存储量为2.没人会说这是无论是 0或1.

其次 - 3位可以存储8个值......嗯......怎么样?

这在数学上是不是不可能吗?

如果我们有一个开关......一个开关能够:ON或OFF两个开关:

开关1:ON OFF ON OFF开关2:ON OFF OFF ON < - 四个值.

3位如何加起来8个值?

应该是六个吧?

开关1:ON OFF ON OFF开关2:ON OFF OFF ON开关3:ON OFF ON OFF

可以soomeone请帮忙!

byte bits

1
推荐指数
2
解决办法
5291
查看次数

标签 统计

bits ×10

c ×5

byte ×2

bit ×1

bit-manipulation ×1

c++ ×1

delphi ×1

integer ×1

logic ×1

sign ×1

uint32-t ×1

verilog ×1

void-pointers ×1

xor ×1