Functional Coverage for larger bit size

Hi All, as discussed above, needs some clarification for the following

Example_1 :

covergroup cgmaskbit(input bit [31:0] position, ref bit [31:0] vector);
  pos: coverpoint (position & vector) !=0 {
   bins tr[] = (1=> 0,0 => 1 ;}
  option.per_instance = 1;
endgroup

cgmaskbit cgmaskbits[32];

foreach (cgmaskbits[i]) cgmaskbits[i] = new(1'b1<<i,m_csr_intr_mask.interrupting_csrmask)

This Example_1 is ensuring that each bit in in the 32bit is toggling from zero to one and one to zero, means, this will create two bins

bins tr[] = (1=> 0,0 => 1 ;}
1 bin to 1=>0 transition
1 bin to 0=>1 transition

Is this understanding is correct?

Example_2 :

covergroup cgmaskbit(input bit [31:0] position, ref bit [31:0] vector);
  pos: coverpoint (position & vector) !=0 {
  option.per_instance = 1;
endgroup

cgmaskbit cgmaskbits[32];

foreach (cgmaskbits[i]) cgmaskbits[i] = new(1'b1<<i,m_csr_intr_mask.interrupting_csrmask)

This Example_2 is ensuring that each bit is going HIGH at least once.

bit [31:0] addr;
addr[31], addr[30]....addr[0]  should be set to ONE

This is like one hot encoding
This will create 32 bins.

Is this understanding is correct?

In the above link, many examples have been discussed, hence wanted to have a clarification.

Kindly confirm 1 and 2

Thank you

Both examples create 64 bins with each covergroup instance having 2 bins.